【问题标题】:InvocationTargetException caused by ArrayIndexOutofBound exceptionArrayIndexOutofBound 异常导致的 InvocationTargetException
【发布时间】:2013-12-09 09:12:47
【问题描述】:

我有一个函数正在使用methodaccesor的invoke函数,问题是正在使用的应用程序非常庞大,所以有时会抛出这个异常InvocationTargetException,而导致这种情况的原因恰好是ArrayIndexOutofBounds Exception。发生的问题是相对少于 8% 的事务导致这种情况(我无法复制这种情况),我无法弄清楚是什么/如何导致这种情况

各位大神可以给我一些关于这个问题的建议吗,如何解决呢?

我在这里使用反射器的 PropertyUtils 类 getindexedproperty 导致 InvocationTargetException 无法复制问题可能导致这种情况的原因,因为它很少发生

【问题讨论】:

  • 仍然,尝试提供SSCCE
  • 查看您的日志并找出导致此问题的数组对象。并在迭代之前计算它的大小并记录它。这样您就可以确定导致错误的原因。

标签: java exception exception-handling indexoutofboundsexception invocationtargetexception


【解决方案1】:

您可能遇到了捕获异常并且没有记录正确堆栈跟踪的代码。

更改代码中的所有此类实例以执行此操作:

try {
    // dangerous stuff here
} catch (SomeException e) {
    // Personally, I like to send a stack trace to stderr.
    // You may prefer to print this to your log, eg if you don't capture stderr,
    // or won't/can't for whatever reason.
    e.printStackTrace(System.err);
}

而且您再也不会不知道这些异常是从哪里冒出来的。

当您访问每个 try-catch 时,问问自己您是否真的应该对此类失败保持稳健;有时最好的办法是让代码快速失败并且首先捕获异常。当应用程序由于某些代码/数据处于不正确的状态而失败时,您将快速发现并获得根本原因的路线图(堆栈跟踪)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多