为什么从库代码抛出一些IOException?

时间:2012-01-19 05:50:12

标签: java

我正在使用第三方库代码,只调用一种方法。该方法被声明为抛出ZZException,但是当在真实环境中运行时,我们发现这个方法有时会抛出IOExceoption。

public void TestMethod() throws ZZException

我想知道为什么抛出IOException没有decalrtion?如果没有声明抛出IOException,IOException是否会被抛出?

BTW,ZZException是RuntimeException的子类

3 个答案:

答案 0 :(得分:1)

除非ZZExceptionIOException的超类,否则IOException不能被取代ZZException。异常链接的概念允许您为给定的异常指定“原因”。您确定没有在堆栈跟踪中看到IOException作为原始ZZException的“原因”吗?如果您能向我们展示您正在获得的堆栈跟踪,这将有所帮助。

答案 1 :(得分:1)

Thsi可能是库代码中的错误或使用库时的其他错误,最好的方法是向开发人员报告,包括一些代码并查看他的答案。

答案 2 :(得分:0)

除非ZZException是IOException的子类,否则记录的方法不能抛出IOException。文档很可能是错误的/过时的。你在课堂上编译时会发生什么?编译器是否认为它可以抛出IOException?

另一种解释是它根本不会被抛出,但它只是在日志文件中看起来那样,因为代码记录了一个堆栈跟踪,或者因为它抛出了一个包装IOException的ZZException(因为它的原因)。