Use*_*ser 11 c# exception-handling
请考虑以下代码,它会抛出三个不同的异常(即System.Configuration.ConfigurationErrorsException,System.FormatException和System.OverflowException):
int SomeInt = Convert.ToInt32(ConfigurationManager.AppSettings["SomeIntValue"]);
Run Code Online (Sandbox Code Playgroud)
异常是不同的,因此在实践中我应该有三个不同的catch块来处理每个特定的异常.但是,在这种特殊情况下,所有异常都以相同的方式处理:将日志写入,例如,EventViewer,并显示一条消息,通知配置错误......在这个特定的原因中,使用它太糟糕了
try
{
int SomeInt = ConfigurationManager.AppSettings["SomeIntValue"];
}
catch (Exception ThisException)
{
/* Log and display error message. */
}
Run Code Online (Sandbox Code Playgroud)
或者我应该使用这三个catch块并在每个块中重复代码?
我不认为这是不好的做法。如果您想要的功能是“每当此代码引发异常时,就采取这些操作”,那么我认为捕获 System.Exception 是非常合适的。
在我看来,您正在包装一个非常具体的框架函数而不是一大块自定义代码这一事实也有所帮助。