簡體   English   中英

這個try-catch塊是否有效?

[英]Is this try-catch block valid?

新問題......

是否有效:

try
{
    // code which may fail
}
catch
{
    Console.Writeline("Some message");
}

或者我總是必須使用:

try
{
    // code which may fail
}
catch (Exception e)
{
    Console.Writeline("Some message");
}

兩個塊都有效。

第一個不會有異常變量。

如果您不打算對異常變量執行任何操作但仍希望捕獲特定異常,則還可以執行以下操作:

try 
{
   // your code here
}
catch(SpecificException)
{
   // do something - perhaps you know the exception is benign
}

但是,為了便於閱讀,我將使用第二個選項並使用異常變量。 與異常相關的最糟糕的事情之一是靜默地吞下它們 - 至少記錄異常。

是的,絕對是這樣一個名為general catch子句的catch塊,在C#語言規范4.0,8.10中看到更多有趣的細節try語句:

既未指定異常類型也未指定異常變量名稱的catch子句稱為常規catch子句。 try語句只能有一個常規catch子句,如果有一個,它必須是最后一個catch子句

是的,您的第一個代碼塊有效。 它將捕獲所有異常。

它是。 它將捕獲所有異常。 所以這兩個代碼示例也是一樣的。

第一個是有效的,它的行為就像第二個一樣。

http://msdn.microsoft.com/en-us/library/0yd65esw%28v=vs.80%29.aspx

catch子句可以不帶參數使用,在這種情況下,它捕獲任何類型的異常,並稱為general catch子句。 它還可以采用從System.Exception派生的對象參數,在這種情況下,它處理特定的異常。

正如@David所說,這是有效的。
如果要獲取更多信息或捕獲特定異常,可以使用第二種語法。 例如

catch (Exception e) 
{
  Debug.Print(e.Message);
}

是的,它是有效的。

你可以隨時參考這篇文章:

在MSDN上處理異常的最佳實踐

當然它是有效的,當你想輸出錯誤消息ex.Message時,你指定catch(Exception e) ,或者捕獲自定義或具體的異常。 在你的情況下使用catch

catch (Exception e)
{
    Console.Writeline("Some message");
}

在這個塊中你可以使用SqlException等。

catch (SqlException e)
{
    Console.Writeline("Some message");
}

為此使用“(SqlException e)”

如果您將使用通用的menssage,請使用:

catch
{
    Console.Writeline("Some message");
}

or

catch (Exception)
{
    Console.Writeline("Some message");
}

不要忘記你可以鏈接捕獲你的異常。 這將允許您根據代碼可能拋出的異常處理不同的方案。

try
{
    //Your code.
}
catch(SpecificException specificException)
{
    //Handle the SpecificException
}
catch(AnotherSpecificException anotherSpecificException)
{
    //Handle AnotherSpecificException
}
catch(Exception exception)
{
    //Handle any Exception
}

暫無
暫無

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

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