Giả sử tôi có một phương pháp mà thay đổi trạng thái của một đối tượng, và cháy một sự kiện để thông báo cho thính giả của sự thay đổi trạng thái này:Tôi có thể có sự an toàn và sự kiện ngoại lệ mạnh không?
public class Example
{
public int Counter { get; private set; }
public void IncreaseCounter()
{
this.Counter = this.Counter + 1;
OnCounterChanged(EventArgs.Empty);
}
protected virtual void OnCounterChanged(EventArgs args)
{
if (CounterChanged != null)
CounterChanged(this,args);
}
public event EventHandler CounterChanged;
}
Việc xử lý sự kiện có thể ném một ngoại lệ ngay cả khi IncreaseCounter
hoàn thành xuất sắc thay đổi trạng thái. Vì vậy, chúng tôi không có mạnh exception safety đây:
Việc bảo lãnh mạnh: đó là các hoạt động đã hoặc hoàn thành công hoặc ném một ngoại lệ, rời khỏi trạng thái chương trình chính xác như đó là trước khi phẫu thuật bắt đầu.
Có thể có sự an toàn ngoại lệ mạnh khi bạn cần tăng sự kiện không?
Nói cách khác, đạt được sự an toàn ngoại lệ mạnh mẽ trong các phương pháp nâng cao sự kiện đi kèm với chi phí phải nuốt/đăng nhập ngoại lệ. Đó gần như luôn luôn là một điều xấu, vì vậy tôi kết luận rằng đạt được an toàn ngoại lệ mạnh mẽ có lẽ không đáng giá. –