我有以下异常处理代码:
private void foo (){
try{
foo1();
}
catch(Exception ex){
if (ex is specificException){ //Catch only the exceptions that I can really handle
// log the exception
// Display a message to the user that something went wrong.
return;
}
throw;
}
}
private void foo1(){
try{
// code that could throw an exception
}
catch{
throw;
}
}
所以问题是:
我应该继续使用这种方法来处理异常,还是应该记录低级函数中的所有异常然后抛出它们?
P.S 我捕获所有未处理的异常,然后优雅地关闭应用程序。
答案 0 :(得分:2)
作为一般规则,除非您想要捕获特定类型的异常,否则应避免使用try / catch。
try {
//some work
}
catch(Exception e) {
//this is bad, it traps everything!
}
try {
//some work
}
catch(ArguementNullException e) {
//good, we only trapped the one exception we were interested in, everything is is thrown
}
那么,如果我们没有尝试/捕捉到所有地方,我们如何处理例外?答案是使用自动日志记录工具为您完成。 Elmah是一个很好的例子,你安装了Nuget软件包和wallah,你的所有异常都会被自动记录下来,你可以查看它们。