HI, 我想知道你对异常处理的想法是什么,即我有一个方法:
public void Method{}
{
for (int i=0;i < length )
{
// dosomething that may case exception
...
...
// rest of the code
}
}
我应该为整个循环添加try catch块以进行异常处理,还是只添加最有价值的代码或其他东西? 什么是最佳做法?
答案 0 :(得分:9)
答案是你想要/可以处理它的级别。如果一个元素的处理失败但你可以继续处理,那么使用try catch inside循环。如果错误可能发生并且您无法继续,则使用外部try catch。
答案 1 :(得分:2)
这取决于您希望代码流动的方式。
例如,即使一个元素抛出异常,循环仍会继续执行吗?如果是这样,那么你希望你的try / catch在for中。如果没有,那么你想要你的try / catch围绕for。
答案 2 :(得分:1)
这取决于。
如果在任何单个元素上遇到异常,是否要继续处理元素?然后在循环内处理异常。
您是否希望在遇到异常时停止循环处理?然后在循环外处理异常。
答案 3 :(得分:0)
我的偏好是使异常处理尽可能接近抛出异常的代码。这为您提供了最佳的堆栈跟踪。我会把它放在循环中。 YMMV
答案 4 :(得分:0)
这取决于你在做什么
如果您计划在某个异常引发时继续迭代,那么您自然会将try catch块放入for。
如果你想在发生某些错误时停止操作,那么更好的办法就是把它放到try catch块中。
for (int i = 0; i < 10000000; i++) {
try {
}catch (Exception e) {
}
}
持续时间16毫秒。
try {
for (int i = 0; i < 10000000; i++) {
}
}catch (Exception e) {
}
持续时间0毫秒。
答案 5 :(得分:0)
您可以识别的问题越少,越好。然后你应该将它们放在try catch块中。