我有 method1(),它是从整个代码中的许多其他方法调用的。这是该方法的签名:
public void method1(final Properties properties) throws IOException {}
所有调用此方法的方法也会抛出 IOException。
method1() 中的实际代码发生了变化,因此现在它不再抛出 IOException,而是抛出一些扩展 Exception 的其他异常,并且不再 IOException 了。
我不想更改所有调用 method1() 的方法的签名。
可以创建 IOException 并仍然从 method1() 抛出 IOException 并因此调用 method1() 的方法吗?
如下所示:
Try {
// code
} catch (Exception e) {
throw new IOException(e.getCause());
}
最佳答案
不,您不应该不这样做,因为您会让其他阅读您的代码或堆栈跟踪的开发人员感到困惑。
从软件设计的角度来看,错误发生得更早。 如果您的代码类似于 API 并被其他人使用,那么您最好使用 Custom-Exceptions 并将 IOException 包装为根本原因。
如果您有完整的源代码,则应该重构源代码并添加另一个异常签名。
关于java - 抛出 IOException 而不是 Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23480682/