【发布时间】:2015-09-04 09:27:38
【问题描述】:
我的高级同事告诉我将每个方法都包装在一个 try-catch 块中,这样他们就可以跟踪异常发生的位置,从而帮助更快地调试问题。将每个方法包装在 Try Catch 中是否更好,例如:
Public int foo()
{
try
{
//do something
}catch(Exeception ex)
{
//do something with ex
}
}
或者在我认为可能发生的地方捕获异常更好?例如。对数组做某事可能会导致IndexOutOfRangeException 发生。
//wrap this in try catch
int[] array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
谢谢。
【问题讨论】:
-
"例如,对数组做某事可能会导致 IndexOutOfRangeException 发生。" - 仅当您有错误时。不要试图捕获由错误引起的特定异常 - 你希望它们失败,被记录,然后得到修复。
-
不,您绝对不想用 try/catch 块包装每个方法调用。 “这样他们就可以跟踪异常发生的位置” - 这就是堆栈跟踪的用途......
-
谢谢乔恩,但你能不能稍微扩展一下“你希望他们失败,被记录,然后得到修复。”如何在不通过 try catch 捕获它们的情况下记录它们?
-
您在顶级 try/catch 中捕获它们,用于整个程序(或请求,或用户操作,或其他任何内容)。但是你不要用 try/catch 乱扔你的整个代码库。
-
尝试了解您的前辈并亲自检查的要点。