例外:catch(Exception ex)问题

时间:2011-01-06 10:14:24

标签: c# exception

据我所知,当catch跟随从基本异常类派生的object参数时,它将只处理此异常。但我不明白为什么我需要声明该类型的变量,“ex”或其他什么。我知道它将被“填充”异常对象..但是不要把它弄好。

6 个答案:

答案 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)

变量将包含有关异常本身的信息,最重要的是消息文本。

如果您只想捕获异常并清理和终止,您可能不需要它,但通常您会希望向用户或日志文件显示实际的错误消息,即填充的变量中包含的消息对你而言。