簡體   English   中英

如果在C#中的表單上發生異常,如何正常關閉表單

[英]How to gracefully close a form if an exception occurs on that form in C#

我的位置我有一個大型用戶應用程序,有很多表單,我正在尋找一種方法來關閉單個表單,如果由於該表單上捕獲的某些邏輯而發生異常。

現在我正在遵循“不要在任何地方寫try / catch以捕捉愚蠢的錯誤”的原則,它確實使我的代碼更清晰,但是當我有NullPointerException時會導致整個應用程序崩潰。

最好的解決方案是一個“本地錯誤處理程序”,每個表單都會收集該級別的任何異常,並在那里終止表單而不是冒泡並終止整個應用程序。

有人有想法么?

但是當我有NullPointerException時,會導致整個應用程序崩潰。

然后你需要修復NullReferenceException(s) ,而不是提出一些在全局級別捕獲異常的復雜機制,並回溯以找到導致它的形式。 您應該簡單地(嘗試)設計您的代碼,以便不可能發生空引用,或者如果它們這樣做,它可以以優雅的方式處理。

如果您有導致崩潰的方案,請修復它,不要忽略它。 您如何保證關閉表單會使您的程序現在和將來保持一致狀態? (提示:你不能)

您可以從公共基類派生表單,以便它們可以共享相同的錯誤處理程序嗎? 我們有一個基本表單,記錄異常,顯示錯誤,然后關閉表單(在調試模式下是可選的)。 每個用戶事件(例如button_click)都包含在調用基本錯誤處理程序的try / catch中。

此外,如果您不知道,還有全局異常處理程序:

Application.ThreadException事件

AppDomain.UnhandledException事件

WindowsFormsApplicationBase.UnhandledException事件(VB)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM