我们的应用程序是模块化的(一组做特定事情的模块)。这些模块具有事件处理程序。这些事件可以从其他模块或应用程序菜单中触发。
情况:
模块 A(具有 UI)收到事件“deleteitem”。事件参数应包含要删除的项目名称。但在这种情况下它是空的。在某个地方,有人搞砸了。
问题:
模块应该抛出吗?请记住,该模块将抛出一个事件处理程序并可能使应用程序崩溃,因为模块编写者不知道是否处理了异常。
以上场景是一个更大问题的快照,该问题涉及从模块中抛出异常,这可能会导致应用程序崩溃。反对它的论点是应用程序可以在没有特定模块的情况下继续工作。那么,谁应该确保 - 模块还是应用程序?
最佳答案
如果项目名称是预期始终存在的东西并且它是 null
是一种特殊情况,永远不应该发生,你应该像现在一样抛出你的应用程序处于不应该发生的未知状态
如果调用者可以从中恢复,他们将编写自己的异常处理例程来处理它。
关于c# - 从 C# 模块抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974917/