前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java中多个异常的捕获顺序(多个catch)

Java中多个异常的捕获顺序(多个catch)

作者头像
用户7886150
修改于 2021-04-25 09:45:27
修改于 2021-04-25 09:45:27
4.2K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Java捕获多个异常

转自:http://lukuijun.iteye.com/blog/340508 

   Java代码  

  import java.io.IOException;   public class ExceptionTryCatchTest {       public void doSomething() throws IOException{           System.out.println("do somthing");       }       public static void main(String[] args){           ExceptionTryCatchTest etct = new ExceptionTryCatchTest();           try {               etct.doSomething();           } catch (Exception e) {                          } catch (IOException e) {                          }       }      }   

 【问题】 

上述程序能否编译通过?为什么?  

 【解答】 

不能编译通过。因为编译的时候会报错:已捕捉到异常 java.io.IOException。  catch(IOException e)这句有错误。  分析:对于try..catch捕获异常的形式来说,对于异常的捕获,可以有多个catch。对于try里面发生的异常,他会根据发生的异常和catch里面的进行匹配(怎么匹配,按照catch块从上往下匹配),当它匹配某一个catch块的时候,他就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。如果有finally的话进入到finally里面继续执行。换句话说,如果有匹配的catch,它就会忽略掉这个catch后面所有的catch。对我们这个方法来说,抛出的是IOException,当执行etct.doSomething();时,可能会抛出IOException,一但抛出IOException,它首先进入到catch (Exception e) {}里面,先和Exception匹配,由于IOException extends Exception,根据多态的原则,IOException是匹配Exception的,所以程序就会进入到catch (Exception e) {}里面,进入到第一个catch后,后面的catch都不会执行了,所以catch (IOException e) {}永远都执行不到,就给我们报出了前面的错误:已捕捉到异常 java.io.IOException。   【总结】 

在写异常处理的时候,一定要把异常范围小的放在前面,范围大的放在后面,Exception这个异常的根类一定要放在最后一个catch里面,如果放在前面或者中间,任何异常都会和Exception匹配的,就会报已捕获到...异常的错误。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
全面理解java异常机制
Single
2018/01/04
1.2K1
全面理解java异常机制
技术转载——Java 异常处理的十个建议
写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:https://github.com/abel-max/Java-Study-Note/tree/master
用户5546570
2020/06/18
5800
技术转载——Java 异常处理的十个建议
Java常用工具之异常
在程序开发中,异常指不期而至的各种状况。它是一个事件,当发生在 程序运行期间时,会干扰正常的指令流程。
慕白
2020/01/02
6540
Java常用工具之异常
Java中异常处理的9个最佳实践
在Java中进行处理异常并非是一件容易的事,初学者经常陷入困惑,甚至有经验的开发者也需要认真研讨哪些异常需要处理,哪些异常需要向上抛出。导致每个开发团队都会自己定制一套特有的异常处理规则,这使得新加入团队的成员都经历一段痛苦的适应期。
码农神说
2020/08/05
6490
Java中异常处理的9个最佳实践
Java基础——异常体系
在Java中,异常对象都是派生于Throwable类的一个实例,Java的异常体系如下图所示:    所有的异常都是由Throwable继承而来,在下一层立即分解为两个分支,Error和Excepti
mukekeheart
2018/02/27
7260
Java基础——异常体系
第六章:异常
第二步:提供一个无参数构造方法,再提供一个带String msg参数的构造方法,在构造方法中调用父类的构造方法 ,用super(String)
捞月亮的小北
2024/03/06
1050
第六章:异常
Java【8】异常处理
编译错误–因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置;
哲洛不闹
2020/07/02
6490
学习下隔壁的异常处理通关指南
本文是我在掘金上作为签约作者发布的第一篇文章,为了不跟我平日在这个公众号上的内容发生冲突,所以选了写 Java 核心基础通关指南这个方向。这样正好也能发挥我平日上班经常要使用这两门后端编程语言的优势,历史原因,以前公司 Java 和 Go 团队还经常争项目...... 后来...
KevinYan
2023/01/03
2770
学习下隔壁的异常处理通关指南
【Java ——异常机制详解】
异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。
奥耶可乐冰
2024/05/31
3080
Java异常处理
异常:在Java语言中,将程序执行中发生的不正常情况称为“异常” 开发过程中的语法错误和逻辑错误不是异常)
Java_慈祥
2024/08/06
1550
Java异常处理
Java异常处理机制
我们经常看到运行程序代码,如果出现错误,我们的控制台就是一片红,这是JVM有一个默认的异常处理机制,即将该异常的名称、异常的信息、异常出现的位置打印在了控制台上,同时将程序停止运行。
JanYork_简昀
2022/03/31
5370
Java异常处理机制
Java 异常的捕捉 try...catch语句
一.try ..catch语句  语法: try{     被捕获的代码 }catch ( 异常类型 ){      对应解决方法 } public class Test { public static void main(String[] args) { try{ int a = 1; System.out.println(a); }catch (Exception exception){ exception.printStackTrace(); } } }  二
用户2965768
2019/03/08
9350
Java 异常的捕捉 try...catch语句
Java异常处理和设计
在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异常处理设计时的几个建议。
用户9009614
2021/11/10
7980
Java异常处理和设计
Java异常处理和设计
在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异常处理设计时的几个建议。
Spark学习技巧
2019/05/09
1K0
Java异常处理和设计
Java:详解Java中的异常(Error与Exception)[通俗易懂]
异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。
全栈程序员站长
2022/09/08
2.6K0
Java:详解Java中的异常(Error与Exception)[通俗易懂]
java中异常的捕获及处理「建议收藏」
什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止。在Java中即,Java在编译或运行或者运行过程中出现的错误。
全栈程序员站长
2022/07/21
2.6K0
java中异常的捕获及处理「建议收藏」
【转】java中异常与try catch finally详解
程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。
洋仔聊编程
2019/06/11
9070
深入理解java异常处理机制
 1. 引子        try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。 <span style="background-color: rgb(255, 255, 255);">package T
大闲人柴毛毛
2018/03/09
9790
深入理解java异常处理机制
异常的捕获与处理
try catch格式 try{ //可能产生异常的语句 }catch{ ...... }catch{ ...... }finally{ ...... } try代码后
mathor
2018/06/20
1.3K0
【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析
这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try {   //需要被检测的异常代码 } catch(Exception e) { //异常处理,即处理异常代码 } finally {   //一定会被执行的代码 } 代码区如果有错误,就会返回所写异常的处理。 首先要清楚,如果没有try的话,出现异常会导致程序崩溃。而try则可以保证程序的正常运行下去,比如说: try { int i = 1/0; } catch(Exc
Angel_Kitty
2018/04/09
8.6K0
相关推荐
全面理解java异常机制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档