如何编写链式异常Java类

时间:2015-09-17 17:42:48

标签: java exception

具体而言,应该覆盖哪些构造函数以将异常限定为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);
}

1 个答案:

答案 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示例)

因此,首先要定义您的用例!