日期:2014-05-18  浏览次数:21083 次

在Main()方法中使用try{……}catch为什么捕捉不到异常?
在Main()方法中使用try{……}catch为什么捕捉不到异常?

在VS2005的开发环境中用 F5 启动调试可以捕捉到,可在bin\Debug\直接运行.exe文件就提示未处理的异常。


------解决方案--------------------
因为不是同一线程,所以捕获不到

你可以这样做,在Program类里:

static void Main()
{
Application.ThreadException +=
new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException +=
new System.UnhandledExceptionEventHandler(AppDomain_UnHandledException);


Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new YourForm());
}

private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
HandleException(e.Exception);
}

private static void AppDomain_UnHandledException(object sender, System.UnhandledExceptionEventArgs e)
{
if (e.ExceptionObject is System.Exception)
{
HandleException((System.Exception)e.ExceptionObject);
}
}

private static void HandleException(Exception ex)
{
MessageBox.Show(ex.Message);
}