zoukankan      html  css  js  c++  java
  • winform应用程序异常处理

    对于winform应用程序补抓异常信息,我们经常用到得try catch。

    如果代码中在某个地方执行异常,但是没有加try catch,这个时候就需要做一些全局异常捕捉。

    怎么做到全局异常捕捉。winform程序在启动cs中,Program.cs添加以下事件

    1.处理未捕获的异常   SetUnhandledExceptionMode

    2.处理UI线程异常      ThreadException 

    3.处理非UI线程异常   UnhandledException

     1 /// <summary>
     2 /// 应用程序的主入口点。
     3 /// </summary>
     4 [STAThread]
     5 static void Main()
     6 {
     7 try
     8 {
     9 
    10 //处理未捕获的异常   
    11 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
    12 
    13 //处理UI线程异常   
    14 Application.ThreadException += Application_ThreadException;
    15 //处理非UI线程异常   
    16 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    17 
    18 Application.EnableVisualStyles();
    19 Application.SetCompatibleTextRenderingDefault(false);
    20 
    21 ……
    22 
    23 }
    24 catch (Exception ex)
    25 {
    26 ……
    27 }
    28 
    29 }
    30 
    31  
    32 
    33 /// <summary>
    34 ///处理UI线程异常   
    35 /// </summary>
    36 /// <param name="sender"></param>
    37 /// <param name="e"></param>
    38 static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
    39 {
    40 string str;
    41 var strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now + "
    ";
    42 var error = e.Exception;
    43 if (error != null)
    44 {
    45 str = string.Format(strDateInfo + "异常类型:{0}
    异常消息:{1}
    异常信息:{2}
    ",
    46 error.GetType().Name, error.Message, error.StackTrace);
    47 }
    48 else
    49 {
    50 str = string.Format("应用程序线程错误:{0}", e);
    51 }
    52 
    53 MessageBox msg = new MessageBox();
    54 msg.title = "系统错误";
    55 msg.text = "发生错误,请查看程序日志!";
    56 msg.ShowDialog();
    57 //Environment.Exit(0);
    58 }
    59 
    60 /// <summary>
    61 /// 处理非UI线程异常   
    62 /// </summary>
    63 /// <param name="sender"></param>
    64 /// <param name="e"></param>
    65 static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    66 {
    67 var error = e.ExceptionObject as Exception;
    68 var strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now + "
    ";
    69 var str = error != null ? string.Format(strDateInfo + "Application UnhandledException:{0};
    
    堆栈信息:{1}", error.Message, error.StackTrace) : string.Format("Application UnhandledError:{0}", e);
    70 
    71 MessageBox msg = new MessageBox();
    72 msg.title = "系统错误";
    73 msg.text = "发生错误,请查看程序日志!";
    74 msg.ShowDialog();
    75 //Environment.Exit(0);
    76 }
  • 相关阅读:
    java.lang.NoClassDefFoundError:org/apache/commons/lang/exception/NestableRuntimeException错误的解决
    json转换成对象
    16年4月20号 个人总结
    sql between and
    sql 中的运算符级别 如and or not
    mybatis int 类型判断<if>
    iOS地址编码解析
    iosiOS 地图 自定义以及添加锚点
    ios如何获取位置权限
    如何初始化一个iOS原生地图
  • 原文地址:https://www.cnblogs.com/y114113/p/11576445.html
Copyright © 2011-2022 走看看