System.out.println("Caught exception:" + e);
for (int i = 0; i < e.getStackTrace().length; i++) {
System.out.println("at " + i + ":"+ e.getStackTrace()[i]);
}
捕获到一个空指针异常,却没有打印出stack trace的信息。
咋会有这种情况哩?

解决方案 »

  1.   

    你catch异常的时候是不是没有写e.printStack()啊
      

  2.   

    我试了试,用以下代码,可以打出一些东西:
    public class test {    public static void main(String[] args) {
            
            try {
                throw new NullPointerException();
            } catch (Exception e) {
                System.out.println("Caught exception:" + e);
                for (int i = 0; i < e.getStackTrace().length; i++) {
                    System.out.println("at " + i + ":"+ e.getStackTrace()[i]);
                }
            }
        }
    }控制台信息:
    Caught exception:java.lang.NullPointerException
    at 0:myJava.test.main(test.java:12)
      

  3.   

    没有写错,因为也捕获到过带着stacktrace的空指针异常,信息都打出来了。
    多谢
      

  4.   

    不会有问题的啊。你的代码和e.printStackTrace()功能是一模一样的。
    如果你的函数输出不来信息,那么e.printStackTrace()也输出不来了。
      

  5.   

    public class test {     public static void main(String[] args) { 
            
            try { 
                throw new NullPointerException(); 
            } catch (Exception e) { 
                    e.printStackTrace();
           } 
            } 
        } 

    这样应该有堆栈信息的吧?
      

  6.   

    ls的代码中,堆栈信息是不多,但是我遇到的是完全没有哦,相当于e.getStackTrace().length=0,所以觉得无法理解……