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