【发布时间】:2014-10-14 13:37:51
【问题描述】:
长期以来,我通过返回值来指示程序中的错误。最近我改用抛出异常,这似乎使代码更简洁,因此更面向目标。
我能够设置异常处理程序
- 在应用程序级别(有很多关于这个主题的资源)
- 在需要的情况下临时进行
但我不知道是否可以在表单级别设置异常处理程序。 预期行为:
- 如果 FormA.Button_Click() 抛出异常,它会在 FormA 的处理程序中捕获
- 如果 FormB.Button_Click() 抛出异常,它会被 FormB 的处理程序捕获
目标是避免将单个try/catch 放入许多事件处理程序中(但许多包含非平凡的操作,因此需要处理)。但我仍然希望留在表单的上下文中,在显示错误消息后保持当前表单打开和活动(例如在 MsgBox() 中)。
表单的主事件循环在哪里,以便我可以在其中放置异常处理程序?这种方法正确吗?
(感兴趣的平台:WPF + VB.NET,但我也懂 WinForms 并会说 C#)
【问题讨论】:
-
不要将业务逻辑放在您的事件中并将所有事件路由到控制器,以便您可以在其中处理所有异常。
-
@Amorphis - 请考虑将此评论转换为答案,以便它最终可以被接受,如果没有人提供更有用的答案。此外,您的建议将异常处理问题转移到控制器级别(如果我不想编写单独的 try/catch 语句。在这种情况下,包含异常处理程序的命令包装器是一个好方法吗?)
标签: .net wpf forms exception-handling