为什么不建议(以最佳实践意义)从入口点管理系统的所有异常。
class Program
{
static void Main(string[] args)
{
try
{
[...]//all the program stuff
}catch(Exception ex)
{
[...]
}
}
}
编辑 在第二点,它是否会改变表演的某些内容?
答案 0 :(得分:5)
我们不建议您应该在可以以有用的方式实际处理它们的地方捕获异常。
如果您无法对异常做任何事情但崩溃,那么您的解决方案可以正常工作,但请考虑一个丢失的文件,它会给您一个例外。您是希望使用“OpenFile”方法中的对话框处理它(或者在这种情况下可能是您打开文件的方法的一部分)并且可能让用户有机会在继续之前浏览文件所在的位置,或者你宁愿把它扔回main并没有真正的选择,除了“log and crash”?
答案 1 :(得分:1)
这种方法:
更好的方法是在特定于上下文的方法中捕获预期的异常,在这些方法中,可以使用最多的知识来正确处理它们。要捕获意外的异常,您的Main方法可能如下所示:
// Event handler for handling all UI thread exceptions.
Application.ThreadException +=
new ThreadExceptionEventHandler(App_UiThreadException);
// Force all Windows Forms errors to go through our handler.
// NB In .NET 4, this doesn't apply when the process state is corrupted.
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
// Event handler for handling all non-UI thread exceptions.
AppDomain.CurrentDomain.UnhandledException += new
UnhandledExceptionEventHandler(App_NonUiThreadException);
// Run the application.