C# · 12月 30, 2021

c# – 捕获System.Exception总是一个糟糕的做法?

请考虑以下代码段,它引发三个不同的异常(即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是完全适当的.

事实上,您正在包装一个非常具体的框架功能,而不是大块的自定义代码有助于我的看法.