让我们举个例子。
public String myMethod(String s) throws ExceptionA, ExceptionB {
}
从方法中抛出这种多重异常是不好的。即我们是否需要使用包装器将其简化为如下所示?
public String myMethod(String s) throws ExceptionC{
try{
}catch(ExceptionA | ExceptionB e){
throw new ExceptionC(e);
}
}
如果是这样,当我们将异常冒泡到顶部时,如何在更高级别的类中找到根本原因异常?
答案 0 :(得分:2)
抛出两种不同的异常是完全可以接受的做法。这是一种直截了当的方法,声明这里可能会出现一些问题,如果他们愿意,可以让任何使用它的人分别处理它们。
答案 1 :(得分:2)
从方法中抛出这种多重范围是不是很糟糕
没有。如果您使用已检查的例外,这是完全正常的。它表明两种不同的特殊事物可能出错,并允许调用以两种不同的方式轻松处理这两种不同的异常情况。
答案 2 :(得分:2)
我认为在一种方法中抛出多种类型的异常并没有错,替代方案会使事情变得复杂。如果你抛出不同的异常,那么调用者可以在一段可读代码中以不同的方式处理它们,而不必解包/找到根本原因/等。请注意,由于各种原因(例如添加信息,但这是一个不同的主题)将它包装在另一个异常中仍然是好的。