请考虑以下代码,它引发三个不同的异常(即System.Configuration.ConfigurationErrorsException
,System.FormatException
和System.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/