具体而言,应该覆盖哪些构造函数以将异常限定为chainable?
Throwable(Throwable cause)
,Throwable(String message, Throwable cause)
或两者兼而有之?
资源:
http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html https://docs.oracle.com/javase/tutorial/essential/exceptions/chained.html
以下示例显示了如何使用链式异常。:
try {
} catch (IOException e) {
throw new SampleException("Other IOException", e);
}
答案 0 :(得分:1)
在这里不清楚“可链接”的含义。
根据您提供的链接,我会假设您的意思是Throwable
有另一个Throwable
作为原因。
在这种情况下,你别无选择,只能使用适当的构造函数;例如:
public class Root
extends Exception
{
public Root(final String msg, final Throwable cause)
{
super(msg, cause);
}
}
另一个鲜为人知的解决方案,但自Java 7以来一直存在,是“抑制”异常。请参阅this link。
这意味着您应该首先定义“链式异常”的含义。从本质上讲,一个例外是“最终的”;将异常嵌入其他异常的需要很少见,但并非闻所未闻(至于抑制异常,请参阅here示例)
因此,首先要定义您的用例!