在Java中,我们可以捕获某种类型的异常:
try{
// Code that does IO like download a file...
}catch(IOException ioe){
ioe.printStackTrace();
// handle ioe
}catch(SomeOtherException soe){
// handle soe
}
Run Code Online (Sandbox Code Playgroud)
现在,可能有多种原因导致异常,在这种情况下,IOException可以是:
java.io.IOException: Illegal character in path at index.....
Run Code Online (Sandbox Code Playgroud)
来自特定的图书馆或其他类似的:
java.io.IOException: Stream closed ...
Run Code Online (Sandbox Code Playgroud)
如果出现问题 Stream
现在,我的问题是,我该如何确定IOException发生了什么?
我该如何区分a Stream closed和Illegal character in path at index...?
当然我可以检查异常消息的字符串,但我不认为这是最好的方法,因为底层库/实现可以更改消息字符串.
编辑:
e.getClass()在这种情况下返回java.io.IOException几乎所有...
我想图书馆IOException在抛弃任何原件的同时抛出自己的东西Exception.
printStackTrace印刷的事实
java.io.IOException: Stream closed ...
// ^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
和
java.io.IOException: Illegal character in path at index.....
// ^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
意思Exception是类型IOException.您可以在此处使用更具体的子类型.
在这种情况下没有办法.他们决定在Exception这两个(以及更多)原因中使用相同的类型.您将无法用不同的catch陈述区分它们.你需要检查他们的消息.
如果Exception有a cause,你必须看看是否有区别类型并重新抛出它.如果你很幸运,你可能能够捕捉更具体的类型Exception.
| 归档时间: |
|
| 查看次数: |
308 次 |
| 最近记录: |