【问题标题】:Details with line number in the code for IndexOutOfBoundsExceptionIndexOutOfBoundsException 代码中带有行号的详细信息
【发布时间】:2018-06-14 14:54:05
【问题描述】:

我正在尝试获取有关 IndexOutOfBounds 异常详细信息的更多详细信息,其中包括程序中的行号(基本上显示了异常发生的位置)。我收到以下异常,但很难准确找到发生这种情况的位置。在下面尝试:

try{
   //something
}catch(IndexOutOfBoundsException ex){
   log.debug(ex.getMessage+ex.toString); // and some others 
}

但我只是收到一条消息:

Index: 0, Size: 0java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

但没有提供更多细节。我想知道异常到底发生在哪里。任何帮助表示赞赏。

【问题讨论】:

  • ex.printStackTrace()
  • @VinceEmigh 也尝试过。但在 log4j as String 中,如: StringWriter sw = new StringWriter(); ex.printStackTrace(new PrintWriter(sw));字符串异常详细信息 = sw.toString();。但这也只是给出了相同的信息。
  • 你试过log.error(Object, Throwable)吗? (其中Object 是您要附加到错误的消息)
  • 所以你的意思是 log.error("Exception details"+ex)? @VinceEmigh
  • 不,该方法接受 2 个参数,例如:log.error("An error has occured!", ex);

标签: java exception indexoutofboundsexception


【解决方案1】:

“在哪里”和“我们如何到达那里”包含在异常的堆栈跟踪中。

如果 log 是一些标准的日志框架,它可能会有一个带有类似 debug(String, Throwable) 签名的版本,能够打印堆栈跟踪/位置信息。

否则,您将不得不使用printStackTrace() 或通过getStackTrace() 访问您需要的堆栈跟踪元素。

【讨论】:

  • 如果没有,可以拨打ex.getStackTrace()获取并手动记录。
  • @azurefrog 我使用了 getStackTrace 但没有显示更多信息。与问题中发布的信息相同。但是你能告诉我更多关于JiriTousek在说什么的信息吗?我正在使用 log4j 进行日志记录
  • @JiriTousek 您能否提供有关如何使用它的更多详细信息?我在这里使用 log4j 进行日志记录。
  • 对于 log4j,使用log.debug("Error while doing foo to the bar", ex);。如果您仍然在日志中看不到任何内容,则可能需要配置 Appender 的格式以打印堆栈跟踪:logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
相关资源
最近更新 更多