簡體   English   中英

C#應用程序中未處理的異常會導致應用程序崩潰嗎?

[英]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.

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