捕获异常 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;user-select:none;"> 1</span> <span style="color: #000000;"> [STAThread]
  5 </span><span style="color: #008080;user-select:none;"> 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;user-select:none;"> 3</span> <span style="color: #000000;">        {
  7 </span><span style="color: #008080;user-select:none;"> 4</span>             <span style="color: #0000ff;">try</span>
  8 <span style="color: #008080;user-select:none;"> 5</span> <span style="color: #000000;">            {
  9 </span><span style="color: #008080;user-select:none;"> 6</span>                 <span style="color: #008000;">//</span><span style="color: #008000;">处理未捕获的异常  </span>
 10 <span style="color: #008080;user-select:none;"> 7</span> <span style="color: #000000;">                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
 11 </span><span style="color: #008080;user-select:none;"> 8</span>                 <span style="color: #008000;">//</span><span style="color: #008000;">处理UI线程异常  </span>
 12 <span style="color: #008080;user-select:none;"> 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;user-select:none;">10</span>                 <span style="color: #008000;">//</span><span style="color: #008000;">处理非UI线程异常  </span>
 14 <span style="color: #008080;user-select:none;">11</span>                 AppDomain.CurrentDomain.UnhandledException += <span style="color: #0000ff;">new</span><span style="color: #000000;"> UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
 15 </span><span style="color: #008080;user-select:none;">12</span> <span style="color: #000000;">                Application.EnableVisualStyles();
 16 </span><span style="color: #008080;user-select:none;">13</span>                 Application.SetCompatibleTextRenderingDefault(<span style="color: #0000ff;">false</span><span style="color: #000000;">);
 17 </span><span style="color: #008080;user-select:none;">14</span>                 Application.Run(<span style="color: #0000ff;">new</span><span style="color: #000000;"> Form1());
 18 </span><span style="color: #008080;user-select:none;">15</span> <span style="color: #000000;">            }
 19 </span><span style="color: #008080;user-select:none;">16</span>             <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception ex)
 20 </span><span style="color: #008080;user-select:none;">17</span> <span style="color: #000000;">            {
 21 </span><span style="color: #008080;user-select:none;">18</span>                 <span style="color: #0000ff;">string</span> str = <span style="color: #800000;">""</span><span style="color: #000000;">;
 22 </span><span style="color: #008080;user-select:none;">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;">
</span><span style="color: #800000;">"</span><span style="color: #000000;">;
 23 </span><span style="color: #008080;user-select:none;">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;user-select:none;">21</span> <span style="color: #000000;">                {
 25 </span><span style="color: #008080;user-select:none;">22</span>                     str = <span style="color: #0000ff;">string</span>.Format(strDateInfo + <span style="color: #800000;">"</span><span style="color: #800000;">异常类型:{0}
异常消息:{1}
异常信息:{2}
</span><span style="color: #800000;">"</span><span style="color: #000000;">,
 26 </span><span style="color: #008080;user-select:none;">23</span> <span style="color: #000000;">                       ex.GetType().Name, ex.Message, ex.StackTrace);
 27 </span><span style="color: #008080;user-select:none;">24</span> <span style="color: #000000;">                }
 28 </span><span style="color: #008080;user-select:none;">25</span>                 <span style="color: #0000ff;">else</span>
 29 <span style="color: #008080;user-select:none;">26</span> <span style="color: #000000;">                {
 30 </span><span style="color: #008080;user-select:none;">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;user-select:none;">28</span> <span style="color: #000000;">                }
 32 </span><span style="color: #008080;user-select:none;">29</span> 
 33 <span style="color: #008080;user-select:none;">30</span> <span style="color: #000000;">                writeLog(str);
 34 </span><span style="color: #008080;user-select:none;">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;user-select:none;">32</span>                 <span style="color: #008000;">//</span><span style="color: #008000;">f.ShowDialog();</span>
 36 <span style="color: #008080;user-select:none;">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;user-select:none;">34</span> <span style="color: #000000;">            }
 38 </span><span style="color: #008080;user-select:none;">35</span> <span style="color: #000000;">        }
 39 </span><span style="color: #008080;user-select:none;">36</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;summary&gt;</span>
 40 <span style="color: #008080;user-select:none;">37</span>         <span style="color: #808080;">///</span><span style="color: #008000;">这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考
 41 </span><span style="color: #008080;user-select:none;">38</span>         <span style="color: #808080;">///</span><span style="color: #008000;">做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
 42 </span><span style="color: #008080;user-select:none;">39</span>         <span style="color: #808080;">///</span><span style="color: #008000;">这就是仁者见仁智者见智,大家自己做了。
 43 </span><span style="color: #008080;user-select:none;">40</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;/summary&gt;</span>
 44 <span style="color: #008080;user-select:none;">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;user-select:none;">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;user-select:none;">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;user-select:none;">44</span> <span style="color: #000000;">        {
 48 </span><span style="color: #008080;user-select:none;">45</span> 
 49 <span style="color: #008080;user-select:none;">46</span>             <span style="color: #0000ff;">string</span> str = <span style="color: #800000;">""</span><span style="color: #000000;">;
 50 </span><span style="color: #008080;user-select:none;">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;">
</span><span style="color: #800000;">"</span><span style="color: #000000;">;
 51 </span><span style="color: #008080;user-select:none;">48</span>             Exception error = e.Exception <span style="color: #0000ff;">as</span><span style="color: #000000;"> Exception;
 52 </span><span style="color: #008080;user-select:none;">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;user-select:none;">50</span> <span style="color: #000000;">            {
 54 </span><span style="color: #008080;user-select:none;">51</span>                 str = <span style="color: #0000ff;">string</span>.Format(strDateInfo + <span style="color: #800000;">"</span><span style="color: #800000;">异常类型:{0}
异常消息:{1}
异常信息:{2}
</span><span style="color: #800000;">"</span><span style="color: #000000;">,
 55 </span><span style="color: #008080;user-select:none;">52</span> <span style="color: #000000;">                   error.GetType().Name, error.Message, error.StackTrace);
 56 </span><span style="color: #008080;user-select:none;">53</span> <span style="color: #000000;">            }
 57 </span><span style="color: #008080;user-select:none;">54</span>             <span style="color: #0000ff;">else</span>
 58 <span style="color: #008080;user-select:none;">55</span> <span style="color: #000000;">            {
 59 </span><span style="color: #008080;user-select:none;">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;user-select:none;">57</span> <span style="color: #000000;">            }
 61 </span><span style="color: #008080;user-select:none;">58</span> <span style="color: #000000;">            writeLog(str);
 62 </span><span style="color: #008080;user-select:none;">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;user-select:none;">60</span>             <span style="color: #008000;">//</span><span style="color: #008000;">f.ShowDialog();</span>
 64 <span style="color: #008080;user-select:none;">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;user-select:none;">62</span> <span style="color: #000000;">        }
 66 </span><span style="color: #008080;user-select:none;">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;user-select:none;">64</span> <span style="color: #000000;">        {
 68 </span><span style="color: #008080;user-select:none;">65</span>             <span style="color: #0000ff;">string</span> str = <span style="color: #800000;">""</span><span style="color: #000000;">;
 69 </span><span style="color: #008080;user-select:none;">66</span>             Exception error = e.ExceptionObject <span style="color: #0000ff;">as</span><span style="color: #000000;"> Exception;
 70 </span><span style="color: #008080;user-select:none;">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;">
</span><span style="color: #800000;">"</span><span style="color: #000000;">;
 71 </span><span style="color: #008080;user-select:none;">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;user-select:none;">69</span> <span style="color: #000000;">            {
 73 </span><span style="color: #008080;user-select:none;">70</span>                 str = <span style="color: #0000ff;">string</span>.Format(strDateInfo + <span style="color: #800000;">"</span><span style="color: #800000;">Application UnhandledException:{0};

堆栈信息:{1}</span><span style="color: #800000;">"</span><span style="color: #000000;">, error.Message, error.StackTrace);
 74 </span><span style="color: #008080;user-select:none;">71</span> <span style="color: #000000;">            }
 75 </span><span style="color: #008080;user-select:none;">72</span>             <span style="color: #0000ff;">else</span>
 76 <span style="color: #008080;user-select:none;">73</span> <span style="color: #000000;">            {
 77 </span><span style="color: #008080;user-select:none;">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;user-select:none;">75</span> <span style="color: #000000;">            }
 79 </span><span style="color: #008080;user-select:none;">76</span> <span style="color: #000000;">            writeLog(str);
 80 </span><span style="color: #008080;user-select:none;">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;user-select:none;">78</span>             <span style="color: #008000;">//</span><span style="color: #008000;">f.ShowDialog();</span>
 82 <span style="color: #008080;user-select:none;">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;user-select:none;">80</span> <span style="color: #000000;">        }
 84 </span><span style="color: #008080;user-select:none;">81</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;summary&gt;</span>
 85 <span style="color: #008080;user-select:none;">82</span>         <span style="color: #808080;">///</span><span style="color: #008000;"> 写文件
 86 </span><span style="color: #008080;user-select:none;">83</span>         <span style="color: #808080;">///</span> <span style="color: #808080;">&lt;/summary&gt;</span>
 87 <span style="color: #008080;user-select:none;">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;user-select:none;">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;user-select:none;">86</span> <span style="color: #000000;">        {
 90 </span><span style="color: #008080;user-select:none;">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;user-select:none;">88</span> <span style="color: #000000;">            {
 92 </span><span style="color: #008080;user-select:none;">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;user-select:none;">90</span> <span style="color: #000000;">            }
 94 </span><span style="color: #008080;user-select:none;">91</span>             
 95 <span style="color: #008080;user-select:none;">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;">ErrLogErrLog-</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;user-select:none;">93</span> <span style="color: #000000;">            {
 97 </span><span style="color: #008080;user-select:none;">94</span> <span style="color: #000000;">                sw.WriteLine(str);
 98 </span><span style="color: #008080;user-select:none;">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;user-select:none;">96</span>                 
100 <span style="color: #008080;user-select:none;">97</span> <span style="color: #000000;">                sw.Close();
101 </span><span style="color: #008080;user-select:none;">98</span> <span style="color: #000000;">            }
102 </span><span style="color: #008080;user-select:none;">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