首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过命令行从java打印出完整的错误消息

通过命令行从java打印出完整的错误消息
EN

Stack Overflow用户
提问于 2011-07-24 09:27:49
回答 2查看 5K关注 0票数 2

我目前正在运行一个只能通过使用java的程序命令行运行的应用程序。当我将错误打印出来时,如何查看完整的打印输出?

也就是说,我如何看待"13多“

代码语言:javascript
复制
Exception:
        java.lang.reflect.InvocationTargetException
        (rethrown as com.comsol.util.exceptions.FlException)
Messages:
        Error running java class
        - Detail: Error_running_java_class

Stack trace:
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.comsol.util.application.CsBaseApplication.runExternalClassStat(Unknown Source)
        at com.comsol.util.application.CsBaseApplication.runExternalClass(Unknown Source)
        at com.comsol.util.compile.a$a.a(Unknown Source)
        at com.comsol.util.compile.a$a.call(Unknown Source)
        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
        at java.util.ArrayList.RangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at Enviornment.makeNextGen(Enviornment.java:269)
        at Enviornment.main(Enviornment.java:44)

        ... 13 more
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-24 09:33:51

此堆栈跟踪包含您需要了解的所有内容,并且与控制台输出无关。它只跳过重复的行。

更新。

假设您的方法调用a()调用b(),并且b()捕获从其他方法foobar()抛出的异常,将其包装在另一个异常中并重新抛出它。下面是堆栈跟踪的外观:

代码语言:javascript
复制
void b() {
   try {
     foobar();
   } catch(Exception e) {
     // Stack trace for e:
     // foobar()
     // b()
     // a()
     throw new RuntimeException("error",e); 
  }
}

void a() {
  try {
    b(); 
  } catch(Exception e) {
   // Stack trace for e
   // b()
   // a() 
   // Cause:
   // foobar()
   // b() - repeating line
   // a() - repeating line
   e.printStackTrace();
  } 
}

因此,打印异常代码只跳过重复的行,因为它们没有携带附加值。在您的问题中,在我的示例中,InvocationTargetException被抛出来代替RuntimeExceptionInvocationTargetException是一个异常,通常由反射使用。

票数 3
EN

Stack Overflow用户

发布于 2011-07-24 09:55:30

在本例中,生成13 more的代码请参见http://www.docjar.com/html/api/java/lang/Throwable.java.html#671

它对此异常与以前打印的异常共有的堆栈跟踪元素进行计数。因此,您知道必须将上述异常中的最后13行(在本例中表示全部)添加到截断跟踪中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6804419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档