java - 我应该如何处理这个IndexOutOfBounds异常?

标签 java exception arraylist error-handling indexoutofboundsexception

我下面有一些代码,在某些非常晦涩的情况下,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/

相关文章:

java - 发现异常后继续执行

C++ 自定义异常

java - ArrayList 元素交换不是永久的

java - 如何使用Java Beans和jsp标签在Postgres数据库中插入数据?

python:在文本文件中记录异常崩溃

java - 主屏幕小部件运行时,数据对象的静态数组列表是否会导致内存泄漏

java - 删除以前的字符串条目

java - 在 1 个请求中将多个文件从 Android 上传到 AppEngine

java - 如何设置RelativeLayout背景颜色?

java - Android-如何让 ScrollView 占据屏幕的整个宽度?