我正在编写一个Java程序,我有一行需要try...catch
语句的代码。问题是代码行总是落到语句的catch
部分。我不知道为什么或问题是什么,所以我想将错误的内容打印到屏幕上,以便我可以尝试追踪问题。我怎样才能做到这一点?我可以尝试System.out.println(e)
其中e
是Exception
类型的变量吗?
答案 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()
更适合开发者,或者放入日志文件。