<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 異常和異常處理(C# 編程指南) C# 語言的異常處理功能可幫助您處理程序運行時出現的任何意外或異常情況。異常處理使用 **try**、**catch** 和 **finally** 關鍵字嘗試某些操作,以處理失敗情況,盡管這些操作有可能失敗,但如果您確定需要這樣做,且希望在事后清理資源,就可以嘗試這樣做。公共語言運行時 (CLR)、.NET Framework 或任何第三方庫或者應用程序代碼都可以生成異常。異常是使用 **throw** 關鍵字創建的。 很多情況下,異常可能不是由代碼直接調用的方法引發,而是由調用堆棧中位置更靠下的另一個方法所引發。在這種情況下,CLR 將展開堆棧,查找是否有方法包含針對該特定異常類型的 **catch** 塊,如果找到這樣的方法,就會執行找到的第一個這樣的 **catch** 塊。如果在調用堆棧中的任何位置都沒有找到適當的 **catch** 塊,就會終止該進程,并向用戶顯示一條消息。 此示例中使用一個方法檢測是否有被零除的情況;如果有,則捕獲該錯誤。如果沒有異常處理,此程序將終止并產生**“DivideByZeroException 未處理”**錯誤。 ``` class ExceptionTest { static double SafeDivision(double x, double y) { if (y == 0) throw new System.DivideByZeroException(); return x / y; } static void Main() { // Input for test purposes. Change the values to see // exception handling behavior. double a = 98, b = 0; double result = 0; try { result = SafeDivision(a, b); Console.WriteLine("{0} divided by {1} = {2}", a, b, result); } catch (DivideByZeroException e) { Console.WriteLine("Attempted divide by zero."); } } } ``` ## 異常概述 異常具有以下特點: * 各種類型的異常最終都是由 **System.Exception** 派生而來。 * 在可能引發異常的語句周圍使用 **try** 塊。 * 一旦 **try** 塊中發生異常,控制流將跳轉到第一個關聯的異常處理程序(無論該處理程序存在于調用堆棧中的什么位置)。在 C# 中,**catch** 關鍵字用于定義異常處理程序。 * 如果給定異常沒有異常處理程序,則程序將停止執行,并顯示一條錯誤消息。 * 除非您可以處理某個異常并使應用程序處于已知狀態,否則請不要捕捉該異常。如果捕捉 **System.Exception**,請在 **catch** 塊的末尾使用 **throw** 關鍵字再次引發該異常。 * 如果 **catch** 塊定義了一個異常變量,則可以用它獲取有關所發生異常類型的更多信息。 * 程序可以使用 **throw** 關鍵字顯式地引發異常。 * 異常對象包含有關錯誤的詳細信息,比如調用堆棧的狀態以及有關錯誤的文本說明。 * 即使發生異常也會執行 **finally** 塊中的代碼。使用 **finally** 塊釋放資源,例如,關閉在 **try** 塊中打開的任何流或文件。 * .NET Framework 中的托管異常是憑借 Win32 結構化異常處理機制實現的。有關更多信息,請參見[結構化異常處理 (C/C++)](https://msdn.microsoft.com/zh-cn/library/swezty51.aspx) 和 [A Crash Course on the Depths of Win32 Structured Exception Handling](http://go.microsoft.com/fwlink/?LinkId=119654)(有關深入探究 Win32 結構化異常處理的應急課程)。 ## 相關章節 有關異常和異常處理的更多信息,請參見以下主題: * [使用異常(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173161.aspx) * [異常處理(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173162.aspx) * [創建和引發異常(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173163.aspx) * [編譯器生成的異常(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173164.aspx) * [如何:使用 try/catch 處理異常(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173165.aspx) * [如何:使用 finally 執行清理代碼(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173166.aspx) ## C# 語言規范 有關詳細信息,請參閱 [C# 語言規范](https://msdn.microsoft.com/zh-cn/library/ms228593.aspx)。該語言規范是 C# 語法和用法的權威資料。 ## 請參閱 [SystemException](https://msdn.microsoft.com/zh-cn/library/system.systemexception.aspx) [C# 編程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [C# 關鍵字](https://msdn.microsoft.com/zh-cn/library/x53a06bb.aspx) [throw(C# 參考)](https://msdn.microsoft.com/zh-cn/library/1ah5wsex.aspx) [try-catch(C# 參考)](https://msdn.microsoft.com/zh-cn/library/0yd65esw.aspx) [try-finally(C# 參考)](https://msdn.microsoft.com/zh-cn/library/zwc8s4fz.aspx) [try-catch-finally(C# 參考)](https://msdn.microsoft.com/zh-cn/library/dszsf989.aspx) [處理和引發異常](https://msdn.microsoft.com/zh-cn/library/5b2yeyab.aspx) [異常層次結構](https://msdn.microsoft.com/zh-cn/library/z4c5tckx.aspx) [編寫可靠的 .NET 代碼](http://go.microsoft.com/fwlink/?LinkId=112400) [特定異常的 Minidumps](http://go.microsoft.com/fwlink/?LinkId=112408)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看