假设一个事件有多个处理程序,如果任何一个事件处理程序抛出异常,则不会执行其余的处理程序。
这是否意味着事件处理程序永远不应该抛出异常?
最佳答案
因为调用事件意味着调用者不知道被调用者:
面对任意异常,调用事件处理程序应该是稳健的。调用堆栈上的所有内容都需要正确清理自己的困惑情况,以防发生完全意外的情况。
事件处理程序应该真正避免抛出异常。
像空引用异常这样的事情在任何代码中都是不可原谅的,所以显然我们并不关心它。
像文件 IO 异常这样的事情总是在写入或读取文件时发生,所以我会避免在事件处理程序中进行 IO。如果在事件处理程序中执行 IO 是有意义的,那么在处理程序中处理 IO 异常也是有意义的。不要将其传播回调用者。找到一些方法来处理它。
关于c# - C# 事件处理程序应该是异常安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2328815/