[英]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);
}
當然它是有效的,當你想輸出錯誤消息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.