捕获异常 winform

可以捕获winform中的异常写到文本中

 

  1 <p>可以捕获winform中的异常写到文本中</p>
  2 <div class="cnblogs_code" onclick="cnblogs_code_show('7777154a-9a5e-48fd-b4a7-8b4ff7f55ec6')"><img id="code_img_closed_7777154a-9a5e-48fd-b4a7-8b4ff7f55ec6" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /><img id="code_img_opened_7777154a-9a5e-48fd-b4a7-8b4ff7f55ec6" class="code_img_opened" style="display: none;" onclick="cnblogs_code_hide('7777154a-9a5e-48fd-b4a7-8b4ff7f55ec6',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" />
  3 <div id="cnblogs_code_open_7777154a-9a5e-48fd-b4a7-8b4ff7f55ec6" class="cnblogs_code_hide">
  4 <pre><span style="color: #008080;"> 1</span> <span style="color: #000000;"> [STAThread]
  5 </span><span style="color: #008080;"> 2</span>         <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> Main()
  6 </span><span style="color: #008080;"> 3</span> <span style="color: #000000;">        {
  7 </span><span style="color: #008080;"> 4</span>             <span style="color: #0000ff;">try</span>
  8 <span style="color: #008080;"> 5</span> <span style="color: #000000;">            {
  9 </span><span style="color: #008080;"> 6</span>                 <span style="color: #008000;">//</span><span style="color: #008000;">处理未捕获的异常  </span>
 10 <span style="color: #008080;"> 7</span> <span style="color: #000000;">                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
 11 </span><span style="color: #008080;"> 8</span>                 <span style="color: #008000;">//</span><span style="color: #008000;">处理UI线程异常  </span>
 12 <span style="color: #008080;"> 9</span>                 Application.ThreadException += <span style="color: #0000ff;">new</span><span style="color: #000000;"> System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
 13 </span><span style="color: #008080;">10</span>                 <span style="color: #008000;">//</span><span style="color: #008000;">处理非UI线程异常  </span>
 14 <span style="color: #008080;">11</span>                 AppDomain.CurrentDomain.UnhandledException += <span style="color: #0000ff;">new</span><span style="color: #000000;"> UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
 15 </span><span style="color: #008080;">12</span> <span style="color: #000000;">                Application.EnableVisualStyles();
 16 </span><span style="color: #008080;">13</span>                 Application.SetCompatibleTextRenderingDefault(<span style="color: #0000ff;">false</span><span style="color: #000000;">);
 17 </span><span style="color: #008080;">14</span>                 Application.Run(<span style="color: #0000ff;">new</span><span style="color: #000000;"> Form1());
 18 </span><span style="color: #008080;">15</span> <span style="color: #000000;">            }
 19 </span><span style="color: #008080;">16</span>             <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception ex)
 20 </span><span style="color: #008080;">17</span> <span style="color: #000000;">            {
 21 </span><span style="color: #008080;">18</span>                 <span style="color: #0000ff;">string</span> str = <span style="color: #800000;">""</span><span style="color: #000000;">;
 22 </span><span style="color: #008080;">19</span>                 <span style="color: #0000ff;">string</span> strDateInfo = <span style="color: #800000;">"</span><span style="color: #800000;">出现应用程序未处理的异常:</span><span style="color: #800000;">"</span> + DateTime.Now.ToString() + <span style="color: #800000;">"</span><span style="color: #800000;">\r\n</span><span style="color: #800000;">"</span><span style="color: #000000;">;
 23 </span><span style="color: #008080;">20</span>                 <span style="color: #0000ff;">if</span> (ex != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
 24 </span><span style="color: #008080;">21</span> <span style="color: #000000;">                {
 25 </span><span style="color: #008080;">22</span>                     str = <span style="color: #0000ff;">string</span>.Format(strDateInfo + <span style="color: #800000;">"</span><span style="color: #800000;">异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n</span><span style="color: #800000;">"</span><span style="color: #000000;">,
 26 </span><span style="color: #008080;">23</span> <span style="color: #000000;">                       ex.GetType().Name, ex.Message, ex.StackTrace);
 27 </span><span style="color: #008080;">24</span> <span style="color: #000000;">                }
 28 </span><span style="color: #008080;">25</span>                 <span style="color: #0000ff;">else</span>
 29 <span style="color: #008080;">26</span> <span style="color: #000000;">                {
 30 </span><span style="color: #008080;">27</span>                     str = <span style="color: #0000ff;">string</span>.Format(<span style="color: #800000;">"</span><span style="color: #800000;">应用程序线程错误:{0}</span><span style="color: #800000;">"</span><span style="color: #000000;">, ex);
 31 </span><span style="color: #008080;">28</span> <span style="color: #000000;">                }
 32 </span><span style="color: #008080;">29</span> 
 33 <span style="color: #008080;">30</span> <span style="color: #000000;">                writeLog(str);
 34 </span><span style="color: #008080;">31</span>                 <span style="color: #008000;">//</span><span style="color: #008000;">frmBug f = new frmBug(str);</span><span style="color: #008000;">//</span><span style="color: #008000;">友好提示界面
 35 </span><span style="color: #008080;">32</span>                 <span style="color: #008000;">//</span><span style="color: #008000;">f.ShowDialog();</span>
 36 <span style="color: #008080;">33</span>                 MessageBox.Show(<span style="color: #800000;">"</span><span style="color: #800000;">发生致命错误,请及时联系作者!</span><span style="color: #800000;">"</span>, <span style="color: #800000;">"</span><span style="color: #800000;">系统错误</span><span style="color: #800000;">"</span><span style="color: #000000;">, MessageBoxButtons.OK, MessageBoxIcon.Error);
 37 </span><span style="color: #008080;">34</span> <span style="color: #000000;">            }
 38 </span><span style="color: #008080;">35</span> <span style="color: #000000;">        }
 39 </span><span style="color: #008080;">36</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;summary&gt;</span>
 40 <span style="color: #008080;">37</span>         <span style="color: #808080;">///</span><span style="color: #008000;">这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考
 41 </span><span style="color: #008080;">38</span>         <span style="color: #808080;">///</span><span style="color: #008000;">做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
 42 </span><span style="color: #008080;">39</span>         <span style="color: #808080;">///</span><span style="color: #008000;">这就是仁者见仁智者见智,大家自己做了。
 43 </span><span style="color: #008080;">40</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;/summary&gt;</span>
 44 <span style="color: #008080;">41</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;param name="sender"&gt;&lt;/param&gt;</span>
 45 <span style="color: #008080;">42</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;param name="e"&gt;&lt;/param&gt;</span>
 46 <span style="color: #008080;">43</span>         <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> Application_ThreadException(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, System.Threading.ThreadExceptionEventArgs e)
 47 </span><span style="color: #008080;">44</span> <span style="color: #000000;">        {
 48 </span><span style="color: #008080;">45</span> 
 49 <span style="color: #008080;">46</span>             <span style="color: #0000ff;">string</span> str = <span style="color: #800000;">""</span><span style="color: #000000;">;
 50 </span><span style="color: #008080;">47</span>             <span style="color: #0000ff;">string</span> strDateInfo = <span style="color: #800000;">"</span><span style="color: #800000;">出现应用程序未处理的异常:</span><span style="color: #800000;">"</span> + DateTime.Now.ToString() + <span style="color: #800000;">"</span><span style="color: #800000;">\r\n</span><span style="color: #800000;">"</span><span style="color: #000000;">;
 51 </span><span style="color: #008080;">48</span>             Exception error = e.Exception <span style="color: #0000ff;">as</span><span style="color: #000000;"> Exception;
 52 </span><span style="color: #008080;">49</span>             <span style="color: #0000ff;">if</span> (error != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
 53 </span><span style="color: #008080;">50</span> <span style="color: #000000;">            {
 54 </span><span style="color: #008080;">51</span>                 str = <span style="color: #0000ff;">string</span>.Format(strDateInfo + <span style="color: #800000;">"</span><span style="color: #800000;">异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n</span><span style="color: #800000;">"</span><span style="color: #000000;">,
 55 </span><span style="color: #008080;">52</span> <span style="color: #000000;">                   error.GetType().Name, error.Message, error.StackTrace);
 56 </span><span style="color: #008080;">53</span> <span style="color: #000000;">            }
 57 </span><span style="color: #008080;">54</span>             <span style="color: #0000ff;">else</span>
 58 <span style="color: #008080;">55</span> <span style="color: #000000;">            {
 59 </span><span style="color: #008080;">56</span>                 str = <span style="color: #0000ff;">string</span>.Format(<span style="color: #800000;">"</span><span style="color: #800000;">应用程序线程错误:{0}</span><span style="color: #800000;">"</span><span style="color: #000000;">, e);
 60 </span><span style="color: #008080;">57</span> <span style="color: #000000;">            }
 61 </span><span style="color: #008080;">58</span> <span style="color: #000000;">            writeLog(str);
 62 </span><span style="color: #008080;">59</span>             <span style="color: #008000;">//</span><span style="color: #008000;">frmBug f = new frmBug(str);</span><span style="color: #008000;">//</span><span style="color: #008000;">友好提示界面
 63 </span><span style="color: #008080;">60</span>             <span style="color: #008000;">//</span><span style="color: #008000;">f.ShowDialog();</span>
 64 <span style="color: #008080;">61</span>             MessageBox.Show(<span style="color: #800000;">"</span><span style="color: #800000;">发生致命错误,请及时联系作者!</span><span style="color: #800000;">"</span>, <span style="color: #800000;">"</span><span style="color: #800000;">系统错误</span><span style="color: #800000;">"</span><span style="color: #000000;">, MessageBoxButtons.OK, MessageBoxIcon.Error);
 65 </span><span style="color: #008080;">62</span> <span style="color: #000000;">        }
 66 </span><span style="color: #008080;">63</span>         <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> CurrentDomain_UnhandledException(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, UnhandledExceptionEventArgs e)
 67 </span><span style="color: #008080;">64</span> <span style="color: #000000;">        {
 68 </span><span style="color: #008080;">65</span>             <span style="color: #0000ff;">string</span> str = <span style="color: #800000;">""</span><span style="color: #000000;">;
 69 </span><span style="color: #008080;">66</span>             Exception error = e.ExceptionObject <span style="color: #0000ff;">as</span><span style="color: #000000;"> Exception;
 70 </span><span style="color: #008080;">67</span>             <span style="color: #0000ff;">string</span> strDateInfo = <span style="color: #800000;">"</span><span style="color: #800000;">出现应用程序未处理的异常:</span><span style="color: #800000;">"</span> + DateTime.Now.ToString() + <span style="color: #800000;">"</span><span style="color: #800000;">\r\n</span><span style="color: #800000;">"</span><span style="color: #000000;">;
 71 </span><span style="color: #008080;">68</span>             <span style="color: #0000ff;">if</span> (error != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
 72 </span><span style="color: #008080;">69</span> <span style="color: #000000;">            {
 73 </span><span style="color: #008080;">70</span>                 str = <span style="color: #0000ff;">string</span>.Format(strDateInfo + <span style="color: #800000;">"</span><span style="color: #800000;">Application UnhandledException:{0};\n\r堆栈信息:{1}</span><span style="color: #800000;">"</span><span style="color: #000000;">, error.Message, error.StackTrace);
 74 </span><span style="color: #008080;">71</span> <span style="color: #000000;">            }
 75 </span><span style="color: #008080;">72</span>             <span style="color: #0000ff;">else</span>
 76 <span style="color: #008080;">73</span> <span style="color: #000000;">            {
 77 </span><span style="color: #008080;">74</span>                 str = <span style="color: #0000ff;">string</span>.Format(<span style="color: #800000;">"</span><span style="color: #800000;">Application UnhandledError:{0}</span><span style="color: #800000;">"</span><span style="color: #000000;">, e);
 78 </span><span style="color: #008080;">75</span> <span style="color: #000000;">            }
 79 </span><span style="color: #008080;">76</span> <span style="color: #000000;">            writeLog(str);
 80 </span><span style="color: #008080;">77</span>             <span style="color: #008000;">//</span><span style="color: #008000;">frmBug f = new frmBug(str);</span><span style="color: #008000;">//</span><span style="color: #008000;">友好提示界面
 81 </span><span style="color: #008080;">78</span>             <span style="color: #008000;">//</span><span style="color: #008000;">f.ShowDialog();</span>
 82 <span style="color: #008080;">79</span>             MessageBox.Show(<span style="color: #800000;">"</span><span style="color: #800000;">发生致命错误,请停止当前操作并及时联系作者!</span><span style="color: #800000;">"</span>, <span style="color: #800000;">"</span><span style="color: #800000;">系统错误</span><span style="color: #800000;">"</span><span style="color: #000000;">, MessageBoxButtons.OK, MessageBoxIcon.Error);
 83 </span><span style="color: #008080;">80</span> <span style="color: #000000;">        }
 84 </span><span style="color: #008080;">81</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;summary&gt;</span>
 85 <span style="color: #008080;">82</span>         <span style="color: #808080;">///</span><span style="color: #008000;"> 写文件
 86 </span><span style="color: #008080;">83</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;/summary&gt;</span>
 87 <span style="color: #008080;">84</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;param name="str"&gt;&lt;/param&gt;</span>
 88 <span style="color: #008080;">85</span>         <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> writeLog(<span style="color: #0000ff;">string</span><span style="color: #000000;"> str)
 89 </span><span style="color: #008080;">86</span> <span style="color: #000000;">        {
 90 </span><span style="color: #008080;">87</span>             <span style="color: #0000ff;">if</span> (!Directory.Exists(<span style="color: #800000;">"</span><span style="color: #800000;">ErrLog</span><span style="color: #800000;">"</span><span style="color: #000000;">))
 91 </span><span style="color: #008080;">88</span> <span style="color: #000000;">            {
 92 </span><span style="color: #008080;">89</span>                 Directory.CreateDirectory(<span style="color: #800000;">"</span><span style="color: #800000;">ErrLog</span><span style="color: #800000;">"</span><span style="color: #000000;">);
 93 </span><span style="color: #008080;">90</span> <span style="color: #000000;">            }
 94 </span><span style="color: #008080;">91</span>             
 95 <span style="color: #008080;">92</span>             <span style="color: #0000ff;">using</span> (StreamWriter sw = <span style="color: #0000ff;">new</span> StreamWriter(<span style="color: #800000;">@"</span><span style="color: #800000;">ErrLog\ErrLog-</span><span style="color: #800000;">"</span>+DateTime.Now.ToString(<span style="color: #800000;">"</span><span style="color: #800000;">yyyy-MM-dd</span><span style="color: #800000;">"</span>)+<span style="color: #800000;">"</span><span style="color: #800000;">.txt</span><span style="color: #800000;">"</span>, <span style="color: #0000ff;">true</span><span style="color: #000000;">, System.Text.Encoding.UTF8))
 96 </span><span style="color: #008080;">93</span> <span style="color: #000000;">            {
 97 </span><span style="color: #008080;">94</span> <span style="color: #000000;">                sw.WriteLine(str);
 98 </span><span style="color: #008080;">95</span>                 sw.WriteLine(<span style="color: #800000;">"</span><span style="color: #800000;">---------------------------------------------------------</span><span style="color: #800000;">"</span><span style="color: #000000;">);
 99 </span><span style="color: #008080;">96</span>                 
100 <span style="color: #008080;">97</span> <span style="color: #000000;">                sw.Close();
101 </span><span style="color: #008080;">98</span> <span style="color: #000000;">            }
102 </span><span style="color: #008080;">99</span>         }</pre>
103 </div>
104 <span class="cnblogs_code_collapse">program</span></div>
105 <p>这个在program中的文件,程序的入口</p>
View Code

 

这个在program中的文件,程序的入口

转载于:https://www.cnblogs.com/zhaokunbokeyuan256/p/4665274.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值