kev*_*v22 3 c# exception-handling winforms
是否有任何理由更喜欢在Windows窗体应用程序中实现全局异常处理程序的这些方法之一?
第一种方法
static void Main(string[] args)
{
try
{
System.Windows.Forms.Application.Run(mainform);
}
catch (Exception ex)
{
// Log error and display error message
}
}
Run Code Online (Sandbox Code Playgroud)
第二种方法
static void Main(string[] args)
{
System.Windows.Forms.Application.ThreadException +=
new ThreadExceptionEventHandler(Application_ThreadException);
System.Windows.Forms.Application.Run(mainform);
}
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
// Log error and display error message
}
Run Code Online (Sandbox Code Playgroud)
处理ThreadException事件会给你一些try/catch没有的东西吗?
我对这种行为的理解是,添加一个ThreadException处理程序将导致该处理程序捕获和处理表单中未处理的异常,这将允许应用程序继续运行.
在try/catch设计中,表单中的第一个未处理的异常将导致应用程序停止.您将捕获异常,但应用程序将结束.
请注意,还有一个AppDomain.UnhandledException事件将在某些情况下引发(在主窗口形式线程以外的线程中未处理的异常并且没有捕获ThreadException),所有这些都是对您的应用程序非常不利的消息.
归档时间: |
|
查看次数: |
874 次 |
最近记录: |