gpt4 book ai didi

Java精确识别异常

转载 作者:搜寻专家 更新时间:2023-10-31 08:19:41 25 4
gpt4 key购买 nike

在 Java 中我们可以捕获特定类型的异常:

try{ 
// Code that does IO like download a file...
}catch(IOException ioe){
ioe.printStackTrace();
// handle ioe
}catch(SomeOtherException soe){
// handle soe
}

现在,可能有多种原因导致异常,在这种情况下,IOException 可以是:

java.io.IOException: Illegal character in path at index.....

来自特定的图书馆或其他类似图书馆:

java.io.IOException: Stream closed ...

如果 Stream 出现问题

现在,我的问题是,如何确定发生了哪种类型的 IOException

如何区分 Stream closedIllegal character in path at index...

当然我可以只检查异常消息的字符串,但我认为这不是最好的方法,因为底层库/实现可以更改消息字符串。

编辑:

e.getClass() 在这种情况下为几乎所有内容返回 java.io.IOException ...

我猜图书馆抛出了他们自己的 IOException 而丢弃了任何原始的 Exception

最佳答案

printStackTrace 打印的事实

java.io.IOException: Stream closed ...
// ^^^^^^^^^^^

java.io.IOException: Illegal character in path at index.....
// ^^^^^^^^^^^

表示ExceptionIOException 类型。此处没有您可以使用的更具体的子类型。

这种情况下没有办法。出于这两个(以及更多)原因,他们决定使用相同的 Exception 类型。您将无法使用不同的 catch 语句来区分它们。您需要查看他们的消息。

如果 Exception 有一个 cause,您将必须查看是否有可区分的类型并重新抛出它。如果幸运的话,您可能能够捕捉到更具体类型的 Exception

关于Java精确识别异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25535320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com