知识普及-What is 异常?
异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误、输入错误)所导致的。在Java等面向对象的编程语言中异常属于对象。
在C#中异常有专门的类——System.Exception
,其它的异常(如IOException
、FileLoadException
)都从其派生。
SO……如何处理
这时我们就要请出——
try { } catch { } finally { }
可是异常处处可以发生((⊙﹏⊙)),总不能处处写try…catch吧。请继续往下看。
方法一——暴力
直接把Main函数整个扩上try…catch
try { Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Load()); } catch { //输出信息 }
方法二——理智
发现Application
类中有此事件ThreadException
😛 这不正是我们想要的吗?
Application.ThreadException += Application_ThreadException; //写在Main方法开头
Application_ThreadException
方法如下
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { BugReports b = new BugReports(e.Exception); b.ShowDialog(); }
方法三——完全
再加上多线程捕获
Application.ThreadException += Application_ThreadException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; //写在Main方法开头
//UI线程异常 static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { BugReports b = new BugReports(e.Exception); b.ShowDialog(); } //多线程异常 static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { BugReports b = new BugReports((Exception)e.ExceptionObject); b.ShowDialog(); }