gpt4 book ai didi

java - 如何检查Java中抛出的异常类型?

转载 作者:太空狗 更新时间:2023-10-29 22:31:09 25 4
gpt4 key购买 nike

如果一个操作捕获了多个异常,我如何确定捕获了哪种类型的异常?

这个例子应该更有意义:

try {
int x = doSomething();
} catch (NotAnInt | ParseError e) {
if (/* thrown error is NotAnInt */) { // line 5
// printSomething
} else {
// print something else
}
}

在第 5 行,如何检查捕获了哪个异常?

我尝试了 if (e.equals(NotAnInt.class)) {..} 但没有成功。

注意:NotAnIntParseError 是我项目中扩展 Exception 的类。

最佳答案

如果可以,总是对个别异常类型使用单独的 catch block ,没有理由不这样做:

} catch (NotAnInt e) {
// handling for NotAnInt
} catch (ParseError e) {
// handling for ParseError
}

...除非您需要共享一些共同的步骤并且出于简洁的原因希望避免使用其他方法:

} catch (NotAnInt | ParseError e) {
// a step or two in common to both cases
if (e instanceof NotAnInt) {
// handling for NotAnInt
} else {
// handling for ParseError
}
// potentially another step or two in common to both cases
}

然而,也可以将共同的步骤提取到方法中,以避免 if-else block :

} catch (NotAnInt e) {
inCommon1(e);
// handling for NotAnInt
inCommon2(e);
} catch (ParseError e) {
inCommon1(e);
// handling for ParseError
inCommon2(e);
}

private void inCommon1(e) {
// several steps
// common to
// both cases
}
private void inCommon2(e) {
// several steps
// common to
// both cases
}

关于java - 如何检查Java中抛出的异常类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27280928/

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