C#.Net应用程序异常处理 Love The Way You Lie 2022-08-12 01:03 155阅读 0赞 在Program.cs文件的static void Main()中,修改如下: static void Main() \{ try \{ //设置应用程序处理异常方式:ThreadException处理 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); //处理UI线程异常 Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application\_ThreadException); //处理非UI线程异常 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain\_UnhandledException); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); \} catch (Exception ex) \{ string str = GetExceptionMsg(ex, string.Empty); MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error); \} \} static void Application\_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) \{ string str = GetExceptionMsg(e.Exception, e.ToString()); MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error); \} static void CurrentDomain\_UnhandledException(object sender, UnhandledExceptionEventArgs e) \{ string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString()); MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error); \} /// <summary> /// 生成自定义异常消息 /// </summary> /// <param name="ex">异常对象</param> /// <param name="backStr">备用异常消息:当ex为null时有效</param> /// <returns>异常字符串文本</returns> static string GetExceptionMsg(Exception ex, string backStr) \{ StringBuilder sb = new StringBuilder(); sb.AppendLine("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*异常文本\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*"); sb.AppendLine("【出现时间】:" + DateTime.Now.ToString()); if (ex != null) \{ sb.AppendLine("【异常类型】:" + ex.GetType().Name); sb.AppendLine("【异常信息】:" + ex.Message); sb.AppendLine("【堆栈调用】:" + ex.StackTrace); sb.AppendLine("【其他错误】:" + ex.Source); \} else \{ sb.AppendLine("【未处理异常】:" + backStr); \} sb.AppendLine("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*"); return sb.ToString(); \} 、、-----------------------------------、、 1、**普通异常** ,一般来说,能够预见的异常都要进行处理。主要是进行异常的捕捉处理。 try\{\}catch\{\}finally\{\}语句块是捕捉处理异常的语句块。在try里捕捉能够预见的异常, 在catch里处理捕捉的异常,而在finally语句是无论有没有发生异常都会执行到,一般是执行一些资源的关闭释放工作,防止内存的泄露。 2、**向上层抛出,** 在给别人提供二次开发的API时,如果在dll里捕捉了异常,有时必要向上层抛出已经捕捉的异常,让上层再进行处理,此时可以用到异常抛出语句throw,在抛出的异常时,要向客户提供API说明在什么情况下有异常抛出,让其在应用里添加异常的捕捉和处理。 3、**系 统回调函数的异常,** 系 统回调函数一定要进行异常处理。如果一个系统回调函数不进行异常处理,则程序会把异常抛给系统,程序会出现崩溃的情况。而且无法得到错误的信息,开发者极 难调式。此类型的异常通常会在系统回调函数里进行处理。比较一个线程入口函数,一般可以在函数的开始地方进行try, 开始捕捉异常,这样可以避免程序把异常抛给系统。 4、**处理未捕捉异常** , 在.Net环境中提供对未捕捉的异常进行系统级的捕捉,系统对运行的监视,如果一些未捕捉的异常则会向系统抛出,系统则会捕捉到此类异常。则开发者则需要向系统注册一个未捕捉的异常处理函数。下面是例子: //处理未捕获的异常 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); //处理UI线程异常 Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Appliction\_ThreadException); //处理非UI线程异常 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain\_UnhandledException); \#region 处理未捕获异常的挂钩函数 static void Application\_ThreadException(object sender, System.ThreadingExceptionEventArgs e) \{ Exception error = e.Exception as Exception; if(null != error) \{ LogRecord.putErrorLog(string.Format("出现应用程序未处理的异常/n异常类型: \{0\}/n异常消息:\{1\}/n异常位置:\{2\}/n", error.GetType().Name, error.Message, error.StackTrace), "main"); \} else \{ LogRecord.putActionLog(string.Format("Application ThreadError:\{0\}", e)); \} \} static void CurrentDomain\_UnhandledException(object sender, UnhandledExceptionEventArgs e) \{ cn.ccets.papercontrol.FullScreenHandle.ShowTray(); Exception error = e.ExceptionObject as Exception; if(null != error) \{ LogRecord.putActionLog(string.Format("Application UnhandledException:\{0\};/n 堆栈信息:\{1\}", error.Message, error.StackTrace)); \} else \{ LogRecord.putActionLog(string.Format("Application UnhandledError:\{0\}", e)); \} \}
相关 异常处理不到位:Java程序处理异常的实例 在Java中,异常处理是程序设计中非常重要的一部分,它可以帮助程序在遇到错误时不会立即崩溃,而是能够优雅地处理错误情况。Java提供了`try`、`catch`和`finall 深藏阁楼爱情的钟/ 2024年11月01日 17:57/ 0 赞/ 14 阅读
相关 异常处理不当:导致Java应用程序崩溃案例 在Java编程中,异常处理是防止程序因为意外情况(如除以零、文件未找到等)而崩溃的重要手段。下面我们将通过一个具体的案例来说明异常处理不当可能带来的问题。 案例描述: 假设有 男娘i/ 2024年09月20日 01:42/ 0 赞/ 75 阅读
相关 异常处理失效:Java程序异常捕获与处理案例 在Java编程中,异常处理是一种机制,用于处理程序运行时可能出现的错误。当发生异常时,如果没有被正确捕获并处理,程序将会终止执行。 下面是一个简单的异常处理案例: ```j 女爷i/ 2024年09月10日 13:30/ 0 赞/ 66 阅读
相关 【Vuejs】一种 Vue 应用程序错误/异常处理机制 ![df54d456164c6376d7dc56216ff522eb.png][] 来自 | https://my.oschina.net/lav/blog/5146875 ╰+攻爆jí腚メ/ 2022年09月03日 11:11/ 0 赞/ 165 阅读
相关 一种Vue应用程序错误/异常处理机制 ![1d1870e29d8903ace9b9c062a4dc1ad8.png][] 来自 | https://my.oschina.net/lav/blog/5146875 忘是亡心i/ 2022年09月02日 11:40/ 0 赞/ 183 阅读
相关 解决devenv.exe应用程序错误,应用程序发生异常 解决devenv.exe应用程序错误,应用程序发生异常 打开VS2008/2010时,经常碰到:devenv.exe应用程序错误,应用程序发生异常,造成的原因是 水深无声/ 2022年08月19日 01:43/ 0 赞/ 153 阅读
相关 一个用于J2EE应用程序的异常处理框架 在大多数Java项目中,大部分代码都是样板代码。异常处理就属于此类代码。即使业务逻辑只有3到4行代码,用于异常处理的代码也要占10到20行。本文将讨论如何让异常处理保持简单和直 男娘i/ 2022年08月13日 15:50/ 0 赞/ 139 阅读
相关 C#.Net应用程序异常处理 在Program.cs文件的static void Main()中,修改如下: static void Main() \{ Love The Way You Lie/ 2022年08月12日 01:03/ 0 赞/ 156 阅读
相关 JAVA Review-应用程序开发-异常处理 前言 本节我们复习一下JAVA的异常以及异常处理机制。 -------------------- 概述 异常类型 在Java语言中,将程序执行 Bertha 。/ 2022年05月21日 04:21/ 0 赞/ 126 阅读
还没有评论,来说两句吧...