欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
WinForm如何優(yōu)雅的處理異常

    場(chǎng)景:在運行、調試代碼的時(shí)候,往往會(huì )遇到一些異常情況,很多時(shí)候我們代碼寫(xiě)得足夠健壯,所以出現的概率比較低,但是如果一旦出現,我們又沒(méi)處理好,就可能會(huì )導致程序的崩潰、退出;當然還有一部分在方法內被我們用try{} catch{}給處理掉了,但是不得不承認,還是會(huì )有極少的異常未被規避,或者說(shuō),相信不是所有的方法內都做了異常處理,所以如何處理這些異常就顯得尤為重要


需求:能否提供一個(gè)捕捉全局異常的方式,并且最好能知道異常出在哪個(gè)位置?這樣首先可以規避掉未處理的異常,增強程序的可用性,然后一旦出現問(wèn)題又能夠精準定位、方便排查。

開(kāi)發(fā)環(huán)境:.NET Framework版本:4.5

開(kāi)發(fā)工具: Visual Studio 2013

實(shí)現代碼:

  /// <summary>        /// 應用程序的主入口點(diǎn)。        /// </summary>        [STAThread]        static void Main()        {            BindExceptionHandler();            Application.EnableVisualStyles();            Application.SetCompatibleTextRenderingDefault(false);            Application.Run(new Form1());        }
/// <summary> /// 綁定程序中的異常處理 /// </summary> private static void BindExceptionHandler() { //設置應用程序處理異常方式:ThreadException處理 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); //處理UI線(xiàn)程異常 Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); //處理未捕獲的異常 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); }
/// <summary> /// 處理UI線(xiàn)程異常 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { string str = GetExceptionMsg(e.Exception, e.ToString()); MessageBox.Show(str, "系統錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); }
/// <summary> /// 處理未捕獲的異常 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString()); MessageBox.Show(str, "系統錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); }
/// <summary>h /// 生成自定義異常消息 /// </summary> /// <param name="ex">異常對象</param> /// <param name="backStr">備用異常消息:當ex為null時(shí)有效</param> /// <returns>異常字符串文本</returns> private static string GetExceptionMsg(Exception ex, string backStr) { StringBuilder sb = new StringBuilder(); sb.AppendLine("****************************異常文本****************************"); sb.AppendLine("【出現時(shí)間】:" + DateTime.Now); if (ex != null) { sb.AppendLine("【異常類(lèi)型】:" + ex.GetType().Name); sb.AppendLine("【異常信息】:" + ex.Message); sb.AppendLine("【堆棧調用】:" + ex.StackTrace);
sb.AppendLine("【異常方法】:" + ex.TargetSite);
} else { sb.AppendLine("【未處理異?!浚? + backStr); } sb.AppendLine("***************************************************************"); return sb.ToString(); }
 private void button1_Click(object sender, EventArgs e)        {            int x = int.Parse(textBox1.Text);        }

實(shí)現效果:

代碼解析:首先就是在Program文件中新建一個(gè)函數:BindExceptionHandler,在此方法綁定程序中的異常處理,即UI線(xiàn)程異常方法:Application_ThreadException和未捕獲的異常處理方法CurrentDomain_UnhandledException。最后再在Main函數中調用即可。然后Form中隨便寫(xiě)個(gè)可造成異常的代碼,即效果如上圖。

另外在方法內部處理返回邏輯的時(shí)候,也可以考慮使用異常,既保證了函數的健壯性,又可以統一處理錯誤,即將所有的非正確的值以異常的方式拋出來(lái),而不是return;代碼如下:

 private string GetMsg(int code)        {            try            {                if (code == 10)                {                    return "Success";                }                else                {                    throw new Exception("Error Code");                }             }            catch (Exception ex)            {                return "Error:" + ex.Message;            }        }
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
關(guān)于.NET異常處理的思考
捕獲子線(xiàn)程異常
[轉]C#單進(jìn)程解決方案
異常處理之ThreadException、unhandledException及多線(xiàn)程異常處理
自定義簡(jiǎn)單日志記錄類(lèi)
我們是怎么實(shí)現gRPC CodeFirst-生成proto
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久