请考虑以下代码,它引发三个不同的异常(即System.Configuration.ConfigurationErrorsExceptionSystem.FormatExceptionSystem.OverflowException):

int SomeInt = Convert.ToInt32(ConfigurationManager.AppSettings["SomeIntValue"]);

异常是不同的,因此在实践中,我应该具有三个不同的catch块来处理每个特定的异常。但是,在这种特殊情况下,所有异常的处理方式都相同:将日志写入EventViewer,并显示一条消息,提示配置错误...在这种特殊原因下,使用起来是否太糟糕了?
try
{
    int SomeInt = ConfigurationManager.AppSettings["SomeIntValue"];
}
catch (Exception ThisException)
{
    /* Log and display error message. */
}

还是我应该使用三个catch块并在每个块中重复代码?

最佳答案

我认为这不是坏习惯。如果您想要的功能是“只要此代码引发异常,请执行以下操作”,那么我认为捕获System.Exception是非常合适的。

在我看来,您包装的是非常具体的框架功能而不是大量的自定义代码,这一事实也有帮助。

关于c# - 捕获System.Exception总是一个坏习惯吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6536149/

10-11 10:46
查看更多