在方法签名中抛出多个异常是不是很糟糕?

时间:2016-08-04 15:28:38

标签: java exception methods exception-handling

让我们举个例子。

public String myMethod(String s) throws ExceptionA, ExceptionB {

} 

从方法中抛出这种多重异常是不好的。即我们是否需要使用包装器将其简化为如下所示?

public String myMethod(String s) throws ExceptionC{
    try{
    }catch(ExceptionA | ExceptionB e){
        throw new ExceptionC(e);
    }
}

如果是这样,当我们将异常冒泡到顶部时,如何在更高级别的类中找到根本原因异常?

3 个答案:

答案 0 :(得分:2)

抛出两种不同的异常是完全可以接受的做法。这是一种直截了当的方法,声明这里可能会出现一些问题,如果他们愿意,可以让任何使用它的人分别处理它们。

答案 1 :(得分:2)

  

从方法中抛出这种多重范围是不是很糟糕

没有。如果您使用已检查的例外,这是完全正常的。它表明两种不同的特殊事物可能出错,并允许调用以两种不同的方式轻松处理这两种不同的异常情况。

答案 2 :(得分:2)

我认为在一种方法中抛出多种类型的异常并没有错,替代方案会使事情变得复杂。如果你抛出不同的异常,那么调用者可以在一段可读代码中以不同的方式处理它们,而不必解包/找到根本原因/等。请注意,由于各种原因(例如添加信息,但这是一个不同的主题)将它包装在另一个异常中仍然是好的。