我可以在同一catch子句中捕获多个Java异常吗?| Java Debug 笔记

124 阅读1分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接

我可以在同一catch子句中捕获多个Java异常吗?

在Java中,我想做这样的事情:

try {
    ...     
} catch (/* code to catch IllegalArgumentException, SecurityException, 
            IllegalAccessException, and NoSuchFieldException at the same time */) {
   someCode();
}

...代替:

try {
    ...     
} catch (IllegalArgumentException e) {
    someCode();
} catch (SecurityException e) {
    someCode();
} catch (IllegalAccessException e) {
    someCode();
} catch (NoSuchFieldException e) {
    someCode();
}

有什么办法吗?

高分回答:

很多的知识点,真的需要写出来才会掌握!!! \color{purple}很多的知识点,真的需要写出来才会掌握!!!{~}

在Java 7中,您可以定义多个catch子句,例如:

catch (IllegalArgumentException | SecurityException e)
{
    ...
}

高分回答:

如果存在异常层次结构,则可以使用基类捕获异常的所有子类。在简并的情况下,您可以使用以下命令捕获所有Java异常:

try {
   ...
} catch (Exception e) {
   someCode();
}

在更常见的情况下,如果RepositoryException是基类,而PathNotFoundException是派生类,则:

try {
   ...
} catch (RepositoryException re) {
   someCode();
} catch (Exception e) {
   someCode();
}

上面的代码将捕获RepositoryException和PathNotFoundException以进行一种异常处理,并将所有其他异常组合在一起。从Java 7开始,按照上述@OscarRyz的回答:

try { 
  ...
} catch( IOException | SQLException ex ) { 
  ...
}

文章翻译自kgs4h5t57thfb6iyuz6dqtun5y-ac4c6men2g7xr2a-stackoverflow-com.translate.goog/questions/3…

作者建议: 其实异常捕获是支持嵌套,就比如,我们使用切面来全局捕获异常,当然也可以在指定的代码块中对异常进行捕获

欢迎关注我的专栏StackOverFlow,我会筛选优质的问答,面试常考!!! \color{red}欢迎关注我的专栏StackOverFlow,我会筛选优质的问答,面试常考!!!{~}

有最新、优雅的实现方式,我也会在文末写出我对本问答的见解 \color{red}有最新、优雅的实现方式,我也会在文末写出我对本问答的见解{~}

真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话

求点赞👍 求关注❤️ 求分享👥 对8块腹肌的我来说真的 非常有用!!!

如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️