gpt4 book ai didi

java - 如何创建一个自定义异常,它在 java 中包装多个异常

转载 作者:行者123 更新时间:2023-11-29 08:26:55 26 4
gpt4 key购买 nike

如何创建自定义异常来包装三个不同的异常,如 InvalidContextExceptionIllegalArgumentException。例如,假设有一个方法:

public void method() throws IOException, IllegalArgumentException, 
InstantiationException, IllegalAccessException {
//Body of the method
}

我想通过创建一个自定义异常来最小化 throws 关键字后的异常数量,该自定义异常处理 InstantiationExceptionIllegalAccessException 以及 IllegalArgumentException 如前所述下面:

 public void method() throws IOException, CustomException {
//Body of the method
}

最佳答案

本着所提问题的精神:

您必须在您的方法中捕获各种异常,然后从您的 catch block 中抛出一个 CustomException。一个异常“环绕”另一个异常的能力是通过 Exception 类本身内置的(请参阅 Exception(Throwable cause) 构造函数)。

public void method() throws IOException, CustomException {
try {
//Body of the method
} catch (IllegalArgumentException | InstantiationException | IllegalAccessException e) {
throw new CustomException(e);
}
}

也就是说,IllegalArgumentException 不是已检查的异常,因此您无论如何都不必声明它。

另外值得指出的是,以上内容是基于您指定要创建自定义异常的。另一种选择是在您的 throws 子句中声明某种类型,该类型是可能实际抛出的各种已检查异常的公共(public)基类。例如,列表中的两个检查异常都是 ReflectiveOperationException 的子类,所以您可以说

public void method() throws IOException, ReflectiveOperationException {
//Body of the method
}

当然,代价是您无法为那些编写调用您方法的代码的人提供信息,因此这可能会限制他们的异常处理程序的质量。在极端情况下,您可以只说throws Thorwable,但这是非常糟糕的形式。

关于java - 如何创建一个自定义异常,它在 java 中包装多个异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52010470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com