我可以看到捕捉到一个异常,我可以打印 e.getCause()
,尽管它总是 null
。
我需要将它设置在某个地方,还是缺少将原因设置为 null 的东西?
原文由 Vik 发布,翻译遵循 CC BY-SA 4.0 许可协议
我可以看到捕捉到一个异常,我可以打印 e.getCause()
,尽管它总是 null
。
我需要将它设置在某个地方,还是缺少将原因设置为 null 的东西?
原文由 Vik 发布,翻译遵循 CC BY-SA 4.0 许可协议
原因通常在异常的构造函数中设置。查看 public Exception(String message, Throwable cause) 。
如果未在构造函数中设置,则可以调用 initCause() 。
原文由 Simon Nickerson 发布,翻译遵循 CC BY-SA 3.0 许可协议
8 回答6.8k 阅读
4 回答1k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
4 回答375 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答640 阅读✓ 已解决
2 回答1.2k 阅读
异常具有属性
message
和cause
。该消息是一种描述,或多或少准确地告诉人类读者出了什么问题。cause
有所不同:如果可用,它是另一个(嵌套)Throwable
。如果我们像这样使用自定义异常,则经常使用这个概念:
回应 djangofan 的评论:
标准是嵌套表达式(原因)也与其堆栈跟踪一起打印。
运行这个小应用程序
将输出
两条消息都包含在内。