我正在使用第三方库代码,只调用一种方法。该方法被声明为抛出ZZException,但是当在真实环境中运行时,我们发现这个方法有时会抛出IOExceoption。
public void TestMethod() throws ZZException
我想知道为什么抛出IOException没有decalrtion?如果没有声明抛出IOException,IOException是否会被抛出?
BTW,ZZException是RuntimeException的子类
答案 0 :(得分:1)
除非ZZException
是IOException
的超类,否则IOException
不能被取代ZZException
。异常链接的概念允许您为给定的异常指定“原因”。您确定没有在堆栈跟踪中看到IOException
作为原始ZZException
的“原因”吗?如果您能向我们展示您正在获得的堆栈跟踪,这将有所帮助。
答案 1 :(得分:1)
Thsi可能是库代码中的错误或使用库时的其他错误,最好的方法是向开发人员报告,包括一些代码并查看他的答案。
答案 2 :(得分:0)
除非ZZException是IOException的子类,否则记录的方法不能抛出IOException。文档很可能是错误的/过时的。你在课堂上编译时会发生什么?编译器是否认为它可以抛出IOException?
另一种解释是它根本不会被抛出,但它只是在日志文件中看起来那样,因为代码记录了一个堆栈跟踪,或者因为它抛出了一个包装IOException的ZZException(因为它的原因)。