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 }
  • 相关阅读:
    ubuntu系统里常用的几个命令
    Vue中常用知识点demo
    Vue基础知识学习(后端)
    ubuntu内lnmp相关操作命令
    linux下安装lnmp集成环境
    js时间戳与日期格式之间相互转换
    yii2中 选择布局的方式,可以设置不使用布局
    yii2中通过migration创建数据表
    php实现支付宝在线支付和扫码支付demo
    linux下添加用户并将文件夹授权给某一个用户
  • 原文地址:https://www.cnblogs.com/y114113/p/11576445.html
Copyright © 2011-2022 走看看