[英]Unhandled exception in C# application does it crash the app?
在我的C#應用程序中,當我在Visual Studio中以調試模式運行它時,它會斷言我有一個未處理的異常(它是一個System.ArgumentException)。 但是當我在發布模式下運行它時,應用程序不會崩潰。
我的問題是如果我有未處理的異常會導致什么后果? 當用戶遇到方案時,應用程序是否崩潰?
C#應用程序中未處理的異常會導致應用程序崩潰嗎?
如果你的意思是“未處理”,意思是“我未經處理”那么它就不一定了。 讓我們說你的方法從靜態void Main(在主線程中)開始,它拋出未處理的異常。 這會導致應用程序崩潰。 但另一方面,如果你在一個新的任務(方法)中異步運行相同的方法,它將崩潰執行此任務的線程是,但不是你的應用程序(此異常將由任務管理器自動處理)。
PS因此任何未處理的異常都會終止程序流程。
如果異常真的未處理(它在所有圖層中冒泡),則會導致應用程序崩潰。 然而正如其他人之前已經提到的那樣,當異常被拋到某些代碼行上並且抓住任何其他不錯的點時,VS可能會顯示錯誤,然后將繼續在catch-handler中進行調試。
考慮以下代碼:
void Main(string[] args)
{
try {
DoSomething();
} catch {
/* error-handling happens here */
}
}
void DoSomething {
// this exception will bubble until Main and is handled there --> no crash
throw new ArgumentException();
}
但是,如果你的Main
-method(或DoSomething
)沒有任何try-catch
-block,那么應用程序也會通過,但因此不會處理它會導致app崩潰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.