一、内存不足
内存是最常见的导致程序崩毁的原因,常用解决方式有如下几种。
- 算法中声明的占内存较大的全局变量或类中声明的私有变量在循环或运行结束后需进行释放,手动设置Dispose(),然后GC.Collect()。
- 对一些重复调用的类避免多次实例化。
- 对于高并发程序,需要结合线程处理方法进行解决。
二、未知原因崩溃
对于此类情况,可以添加未处理异常的事件。
static void Main(string[] args){AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;}private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e){Console.WriteLine("有未经处理的异常,程序即将退出!");Environment.Exit(-1);}
三、抓取异常方法
- 使用下面语句,可以抓取未捕获的异常。Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
- 对于UI线程异常问题,则可以使用下面语句
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); - 对于其他异常问题,则见2.