可以捕获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;"><summary></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;"></summary></span> 44 <span style="color: #008080;user-select:none;">41</span> <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="sender"></param></span> 45 <span style="color: #008080;user-select:none;">42</span> <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="e"></param></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;"><summary></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;"></summary></span> 87 <span style="color: #008080;user-select:none;">84</span> <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="str"></param></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>
这个在program中的文件,程序的入口