打印例外原因

时间:2014-05-18 01:31:09

标签: java

我正在编写一个Java程序,我有一行需要try...catch语句的代码。问题是代码行总是落到语句的catch部分。我不知道为什么或问题是什么,所以我想将错误的内容打印到屏幕上,以便我可以尝试追踪问题。我怎样才能做到这一点?我可以尝试System.out.println(e)其中eException类型的变量吗?

2 个答案:

答案 0 :(得分:3)

您可以尝试:

try {
    . . .
} catch (Exception e) {
    e.printStackTrace();
}

编辑(由Sujan Sivagurunathan's answer推动:如果异常可能是次要异常(由于另一个异常而引发的异常),您可以执行更复杂的版本:

try {
    . . .
} catch (Exception e) {
    e.printStackTrace();

    for (Throwable t = e.getCause(); t != null; t = t.getCause()) {
        System.err.println("Caused by:")
        t.printStackTrace();
    }
}

答案 1 :(得分:0)

getMessage方法包含描述异常的消息:

try {
    // ...
} catch (Exception e) {
    System.out.println(e.getMessage());
}

对于ArithmeticException

,输出可以是:Divided by zero

您也可以尝试:

try {
    // ...
} catch (Exception e) {
    e.printStackTrace();
}

输出可能是:

java.lang.ArithmeticException: Divided by zero
at javaapplication27.Test1.test(Test1.java:27)
at javaapplication27.Test1.main(Test1.java:19)

e.getMessage()更适合向最终用户展示,而e.printStackTrace()更适合开发者,或者放入日志文件。