据我所知,当catch跟随从基本异常类派生的object参数时,它将只处理此异常。但我不明白为什么我需要声明该类型的变量,“ex”或其他什么。我知道它将被“填充”异常对象..但是不要把它弄好。
答案 0 :(得分:7)
您没有拥有来指定变量。例如,您可以写:
try
{
...
}
catch (IOException)
{
// Do something
}
但是,您通常想要记录异常或采取某些操作,而这些操作在某种程度上取决于它。 (根据我的经验,日志记录是异常变量的最常见用法 - 或者将其用作新异常的“内部异常”。)在catch语句中声明变量就是你如何做到这一点。
答案 1 :(得分:1)
您不必声明任何变量。你可以这样:
try
{
//something here...
}
catch (ThreadAbortException)
{
//handle only ThreadAbortException..
}
答案 2 :(得分:1)
try {
}
catch(SQLException){
//do something not using exception info
}
catch(OtherException ex){
//do something else using exception info
}
catch(Exception ex){
//do something else
Logger.Log(ex);
}
答案 3 :(得分:0)
如果您没有声明变量来包含捕获的异常,那么您将如何分析抛出的异常对象?
如果你不在乎,你不会被迫宣布。但一般来说,如果你想用它做点什么,这是个好主意。
答案 4 :(得分:0)
您可以使用它来查找有关该异常的更多信息
("Exception Message: {0}", ex.Message) or
about inner exception, ex.InnerException;
答案 5 :(得分:0)
变量将包含有关异常本身的信息,最重要的是消息文本。
如果您只想捕获异常并清理和终止,您可能不需要它,但通常您会希望向用户或日志文件显示实际的错误消息,即填充的变量中包含的消息对你而言。