Newby问题......
是否有效:
try
{
// code which may fail
}
catch
{
Console.Writeline("Some message");
}
或者我总是必须使用:
try
{
// code which may fail
}
catch (Exception e)
{
Console.Writeline("Some message");
}
答案 0 :(得分:5)
两个区块都有效。
第一个没有异常变量。
如果您不打算对异常变量执行任何操作但仍希望捕获特定异常,则还可以执行以下操作:
try
{
// your code here
}
catch(SpecificException)
{
// do something - perhaps you know the exception is benign
}
但是,为了便于阅读,我将使用第二个选项并使用异常变量。与异常相关的最糟糕的事情之一是静默地吞下它们 - 至少记录异常。
答案 1 :(得分:3)
是的,绝对是这样一个名为general catch子句的catch块,在 C#语言规范4.0,8.10中看到更多有趣的细节try语句:
一个catch子句,既不指定异常类型也不指定 异常变量名称称为常规catch子句。一试 语句只能有一个通用的catch子句,如果有的话 目前它必须是最后一个捕获条款
答案 2 :(得分:2)
是的,您的第一个代码块有效。它将捕获所有异常。
答案 3 :(得分:1)
是的。它将捕获所有异常。所以这两个代码示例也是一样的。
答案 4 :(得分:1)
第一个是有效的,它就像第二个一样。
http://msdn.microsoft.com/en-us/library/0yd65esw%28v=vs.80%29.aspx
catch子句可以不带参数使用,在这种情况下可以使用它 捕获任何类型的异常,并称为一般捕获 条款。它还可以采用派生自的对象参数 System.Exception,在这种情况下它处理特定的异常。
答案 5 :(得分:1)
@David回答这是有效的。
如果要获取更多信息或捕获特定异常,可以使用第二种语法。
E.g。
catch (Exception e)
{
Debug.Print(e.Message);
}
答案 6 :(得分:1)
答案 7 :(得分:1)
当然它是有效的,当您想要输出错误消息ex.Message时,指定catch(Exception e)
,或者捕获自定义或具体的异常。在您的情况下使用catch
。
答案 8 :(得分:1)
catch (Exception e)
{
Console.Writeline("Some message");
}
在此块中,您可以使用SqlException等。
catch (SqlException e)
{
Console.Writeline("Some message");
}
为此使用“(SqlException e)”
如果您使用通用文章,请使用:
catch
{
Console.Writeline("Some message");
}
or
catch (Exception)
{
Console.Writeline("Some message");
}
答案 9 :(得分:1)
不要忘记你可以锁定你的例外情况。这将允许您根据代码可能抛出的异常处理不同的场景。
try
{
//Your code.
}
catch(SpecificException specificException)
{
//Handle the SpecificException
}
catch(AnotherSpecificException anotherSpecificException)
{
//Handle AnotherSpecificException
}
catch(Exception exception)
{
//Handle any Exception
}