W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
try
語句指定受錯誤處理或清除代碼影響的代碼塊。
try
塊必須后跟 catch
塊, finally
塊,或兩者。
當(dāng)try塊中發(fā)生錯誤時, catch
塊執(zhí)行。
執(zhí)行 finally
塊執(zhí)行后離開 try
塊執(zhí)行清理代碼,無論是否發(fā)生錯誤。
catch塊可以訪問包含有關(guān)的信息的 Exception
對象錯誤。
您使用catch塊來補償錯誤或重新拋出異常。
如果您只想記錄問題,或者想要重新創(chuàng)建一個新的更高級別的異常類型,則重新拋出異常。
一個 finally
塊會給你的程序添加確定性,CLR總是執(zhí)行它。
它對清理任務(wù)(如關(guān)閉網(wǎng)絡(luò)連接)很有用。
try語句如下所示:
try { ... // exception may get thrown within execution of this block } catch (ExceptionA ex) { ... // handle exception of type ExceptionA } catch (ExceptionB ex) { ... // handle exception of type ExceptionB } finally { ... // cleanup code }
考慮下面的程序:
class Main { static int Calc (int x) { return 10 / x; } static void Main() { int y = Calc (0); Console.WriteLine (y); } }
為了防止運行時在x
為0的情況下拋出DivideByZeroException
,我們可以捕獲異常,如下所示:
class Main { static int Calc (int x) { return 10 / x; } static void Main() { try { int y = Calc (0); Console.WriteLine (y); } catch (DivideByZeroException ex) { Console.WriteLine ("x cannot be zero"); } Console.WriteLine ("program completed"); } }
catch
子句指定要捕獲的異常的類型。
這必須是 System.Exception
或 System.Exception
的子類。
捕獲 System.Exception
捕獲所有可能的錯誤。
您可以使用多個catch子句處理多個異常類型:
class Main { static void Main (string[] args) { try { byte b = byte.Parse (args[0]); Console.WriteLine (b); } catch (IndexOutOfRangeException ex) { Console.WriteLine ("Please provide at least one argument"); } catch (FormatException ex) { Console.WriteLine ("That"s not a number!"); } catch (OverflowException ex) { Console.WriteLine ("You"ve given me more than a byte!"); } } }
如果您不需要訪問其屬性,則可以捕獲異常而不指定變量:
catch (StackOverflowException) // no variable { ... }
我們可以省略變量和類型,這意味著將捕獲所有異常:
catch { ... }
finally
塊總是執(zhí)行。
finally塊通常用于清理代碼。
static void methodA() { StreamReader reader = null; try { reader = File.OpenText ("file.txt"); if (reader.EndOfStream) return; Console.WriteLine (reader.ReadToEnd()); } finally { if (reader != null) reader.Dispose(); } }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: