C#程式如何捕捉未try/catch的異常——不彈“XXX已停止工作”報錯框

来源:http://www.cnblogs.com/roadbike/archive/2016/08/25/5808613.html
-Advertisement-
Play Games

誠意滿滿直接上代碼: 併在Program類(Main函數所在類)中,增加如下函數即可: 註意:如果在CurrentDomain_UnhandledException中只列印異常而不終止程式的話,該異常仍然會被拋出,最終還是會導致彈出“XXX已停止工作”的對話框,所以如果不想彈框讓程式卡住的話就需要用 ...


誠意滿滿直接上代碼:

static void Main(string[] args)
{
    //Main函數中增加此句
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

併在Program類(Main函數所在類)中,增加如下函數即可:

        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            Console.WriteLine(e.ExceptionObject.ToString());
            Environment.Exit(-1); //有此句則不彈異常對話框
        }

註意:如果在CurrentDomain_UnhandledException中只列印異常而不終止程式的話,該異常仍然會被拋出,最終還是會導致彈出“XXX已停止工作”的對話框,所以如果不想彈框讓程式卡住的話就需要用第二句Environment.Exit或其他方式終止程式。當然此處除了向命令行輸出異常外還可以保存當前數據或者其他災難處理措施,但因為程式已經發生異常了,可能有些數據已經損壞,讀取可能導致其他問題,要小心哦!

另外winform程式的話,對Application對象也要做一些設置,具體可以參考微軟文檔中的例子:https://msdn.microsoft.com/zh-cn/library/ms157905(v=vs.110).aspx


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 摘自:http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=7660&extra=page%3D1%26filter%3Dtypeid%26typeid%3D36 1. gzip工具語法: gzip [-d#] filename 其中#為1 ...
  • Linux系統的基本原則: 1.由目的單一的小程式組成;組合小程式完成複雜任務; 2.一切皆文件; 3.儘量避免捕獲用戶介面;(儘量不與用戶交互) 4.配置文件保存為純文本格式。 shell:人機交互介面 GUI介面:圖形用戶界面介面 X-Window Gnome:C KDE:C++ XFace C ...
  • 摘自:http://www.apelearn.com/bbs/thread-7146-1-1.html ":x" 和 ":wq" 的區別如下:(1) :wq 強制性寫入文件並退出(存檔並退出 write and quite)。即使文件沒有被修改也強制寫入,並更新文件的修改時間。(2) :x 寫入文件 ...
  • static在C中主要有兩個作用: 1、修飾變數 (局部變數、全局變數 都存在記憶體的靜態區) 靜態全局變數: 作用域僅限於變數被定義的文件中,其中文件即使用extern聲明也無法使用它。 靜態局部變數: 2、修飾函數 函數前加static使得函數成為靜態函數。 函數的作用域僅限於本文件(所以又稱內部 ...
  • 摘自:http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=7621&extra=page%3D1%26filter%3Dtypeid%26typeid%3D36 1. 查看磁碟或者目錄的容量 df 查看磁碟各分區使用情況 不加參數以k為單 ...
  • 我準備安裝到/usr/local目錄下 1. cd /usr/local 2. 安裝GCC 和GCC-C++ yum install gcc yum install -y gcc gcc-c++ 3. 安裝pcre庫 cd /usr/local/wget ftp://ftp.csx.cam.ac.u ...
  • Tomcat需要JDK的支持,所以安裝Tomcat前先安裝JDK。 一、首先到JDK官網下載與自己機器相應的JDK。註意機器位數,Linux系統的話可以用uname -a命令查看系統信息,如果是Ubuntu的系統,下載尾碼為.tar.gz的就行。 我64位的機器下的是這個JDK:wget http: ...
  • 我們在編寫程式時,會在程式運行過程中記錄一些日誌。log4net作為一款經久耐用的日誌組件,值得我們信賴。在中小型公司中,往往沒有專業的日誌伺服器來處理應用程式產生的日誌,而格式化不好的日誌文件又為上線後日誌的統計、分析、查找造成了困難。 Excel作為一款常用的辦公軟體,用來處理一些中小數量級的數 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...