我下面有一些代码,在某些非常晦涩的情况下,fromIndex变量设置为-1:
int fromIndex = 0;
if (newCurrentPeriod != null) {
// Guard in case we are rolling back to before the start of the event.
fromIndex = allPeriods.indexOf(newCurrentPeriod);
}
for (Period resetPeriod : allPeriods.subList(fromIndex, toIndex)) {
...
}
当前,如果为
fromIndex is -1
,则为ArrayList class will throw an IndexOutOfBounds Exception within the sublistRangeCheck method
。我的查询:
我应该如何最好地在我们的代码中处理此异常?我是否应该使用try catch包围它,打印堆栈跟踪并记录一些其他信息以进行调试?在执行for循环之前,我是否应该防御性地检查fromPeriod是否> = 0,如果没有记录某些信息呢?
您/您将如何在代码中处理这种情况的最佳实践?
提前致谢。
最佳答案
理想情况下,捕获IndexOutOfBounds(RuntimeException)不是一个好习惯。
运行时异常是发生的异常,程序员可能可以避免。
仅在完成操作结束时才捕获运行时异常,仅用于向用户显示已发生错误的消息。
此外,运行时异常不会在编译时被识别,并且如果您仅通过很小的检查就可以确定发生异常的可能性(例如,对NullPointer进行null检查,对IndexOutofBounds进行索引检查),则这是一种最佳做法,它可以减少运行时异常JVM。
添加fromIndex == -1的检查将是更好的方法,并记录发生迭代的详细信息。
关于java - 我应该如何处理这个IndexOutOfBounds异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26842770/