23
A
回答
49
异常具有message
和cause
的属性。信息是一种描述,或多或少地准确地告诉读者,出了什么问题。 cause
是不同的:它是,如果可用,另一个(嵌套)Throwable
。响应@djangofans评论 -
catch(IOException e) {
throw new ApplicationException("Failed on reading file soandso", e);
// ^Message ^Cause
}
编辑:
的概念,如果我们使用自定义异常喜欢这个经常被使用。
标准是嵌套表达式(原因)也是用它的堆栈跟踪打印的。
运行这个小应用
public class Exceptions {
public static void main(String[] args) {
Exception r = new RuntimeException("Some message");
throw new RuntimeException("Some other message", r);
}
}
将输出
Exception in thread "main" java.lang.RuntimeException: Some other message
at Exceptions.main(Exceptions.java:4)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.RuntimeException: Some message
at Exceptions.main(Exceptions.java:3)
... 5 more
两个消息都包括在内。
2
class Exception
has constructors that takes cause
Throwable。您需要调用这些构造函数,或者为调用这些超级构造函数的自定义异常类提供构造函数。
2
的getCause - 如果原因不存在或未知返回此抛出或空的原因。 (原因是导致此抛出对象抛出的对象。)
阅读Java文档:getCause
13
原因通常是在异常的构造方法设置。看看public Exception(String message, Throwable cause)。
如果未在构造函数中设置,则可以调用initCause()。
相关问题
- 1. 替代Java ME中的异常原因
- 2. 异常原因而在JSP
- 3. 连接重置异常,未知原因
- 4. 原因此异常WCF
- 5. 显示异常的原因
- 6. 试图找到Java异常的原因,文件在哪里?
- 7. 设置Viewbox.Child原因ArgumentException
- 8. Classformat异常的原因是什么?
- 9. ClassNotFoundException的原因为检查异常
- 10. 空指针异常的原因
- 11. CursorLoader和acquireUnstableProvider的异常原因?
- 12. XCode:异常。如何检测原因?
- 13. StackOverFlow - 异常?我找不到原因:-(
- 14. 这是什么原因为stackoverflow异常?
- 15. System.Globalization.DateTimeFormatInfo.calendar原因抛出一个异常
- 16. 这个java MySQL异常的原因是什么(和处理)?
- 17. java程序抛出异常的原因ServiceException(javax.xml.rpc.ServiceException)?
- 18. 如何检查是否异常的原因的异常类型
- 19. 在Java中获取套接字读取超时异常的原因是什么?
- 20. 找到OWIN对象处置异常的原因
- 21. 如何在线程“main”中找到异常的原因java.lang.StackOverflowError
- 22. 在此代码中导致nullreference异常的原因是什么?
- 23. 在异常处设置ErrorCode
- 24. 线程中的异常线程4 - 查找原因或发现异常
- 25. 异常在Java中
- 26. 如何在JAVA中设置异常消息?
- 27. 在C++ Builder中设置异常处理
- 28. 如何从java中获取异常原因和消息形式多类
- 29. JAVA默认值设计原因
- 30. 的TextView在PopUpwindow原因空指针异常
是否有可能显示一个异常,同时显示额外原因的附加堆栈跟踪?这不就是Vik真的在问什么吗?他并没有问:显示消息的原因,他问:显示异常的原因。 – djangofan 2017-01-15 01:27:31
@djangofan - 我在回答中添加了一些行。希望能帮助到你。 – 2017-01-16 21:46:43