java的异常处理是为了提高程序健壮性的。

当发生异常的时候,我们把这个异常捕获到,或者throw出去。然后对这些异常的情况进行处理。并且异常发生之后的代码仍然会执行,这样就能提高程序的健壮性。如下

public class Test {

    public static void main(String[] args) {

        System.out.println("start");
try {
FileInputStream fins = new FileInputStream("不存在的文件.txt");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} System.out.println("end"); } }

控制台打印信息

start
end
java.io.FileNotFoundException: 不存在的文件.txt (系统找不到指定的文件。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at com.designPattern.test.Test.main(Test.java:14)

根据控制台的打印信息,我们可以知道;虽然发生了文件不存在异常,但是之后的代码仍然执行了。也就是当程序出现某个异常的时候,我们能捕获到,进行处理,那么在用户看来程序是正确的。这样,程序的健壮性就提高了。但是,如果发生的异常与catch到的异常不匹配的时候会发生什么呢?如下

public class Test {

    public static void main(String[] args) {

        System.out.println("start");

        try {
FileInputStream fins = new FileInputStream("存在的文件.txt");
int x=2/0;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} System.out.println("end"); } }

控制台打印信息

start
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.designPattern.test.Test.main(Test.java:15)

我们看到,发生异常之后的程序没有正常执行。那么原因是为什么呢?

因为发生的异常是 0做除数引起的 ArithmeticException 异常,而我们catch到的却是 IOException。java异常的初衷是,捕获特定的异常,当发生某个特定的异常的时候,我们进行相应的处理补救。所以,后面代码才没有执行。

而解决的方法也很简单,把 IOException 换成 Exception就可以了

java异常不匹配问题的更多相关文章

  1. java 异常匹配

    抛出异常的时候,异常处理系统会安装代码书写顺序找出"最近"的处理程序. 找到匹配的程序后,它就认为异常将得到清理,然后就不再继续查找. 查找的时候并不要求抛出的异常同处理程序的异常 ...

  2. “全栈2019”Java异常第十二章:catch与异常匹配

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  3. 2.Java异常学习

    1.Java异常的概念 异常的例子 1.除法就是一个需要捕获异常的例子,除数又可能是0 异常处理的基本流程如下 一旦发生异常,就使得程序不按照原来的流程继续的运行下去 a.程序抛出异常 try{ th ...

  4. Java 异常讲解(转)

    六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?   1 OutputStreamWrite ...

  5. 浅析Java异常

    1.什么是异常 结构不佳的代码不能运行,这是Java的基本理念. 发现错误的理想时机是在编译期.然而,编译器并不能发现所有的错误,余下的问题就需要在程序运行时解决.这就需要错误能通过某种方式,把适当的 ...

  6. 一篇不错的讲解Java异常的文章(转载)

    http://www.blogjava.net/freeman1984/archive/2007/09/27/148850.html 六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已 ...

  7. 全面理解Java异常的运行机制

    1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话. ...

  8. Java异常之try,catch,finally,throw,throws

    Java异常之try,catch,finally,throw,throws 你能区分异常和错误吗? 我们每天上班,正常情况下可能30分钟就能到达.但是由于车多,人多,道路拥挤,致使我们要花费更多地时间 ...

  9. Java 异常机制

    Java 异常机制 什么是异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程 为什么要有异常 什么出错了 哪里出错了 ...

随机推荐

  1. Freeswitch Tutorial

    I. Install Freeswitch 1) FreeSWITCH Explained https://freeswitch.org/confluence/ https://freeswitch. ...

  2. 270-VC709E 增强版 基于FMC接口的Xilinx Vertex-7 FPGA V7 XC7VX690T PCIeX8 接口卡

    VC709E 增强版 基于FMC接口的Xilinx Vertex-7 FPGA V7 XC7VX690T PCIeX8 接口卡 一.板卡概述       本板卡基于Xilinx公司的FPGA XC7V ...

  3. React(2) --super关键字

    参考:http://www.phonegap100.com/thread-4911-1-1.html Es6中的super可以用在类的继承中,super关键字,它指代父类的实例(即父类的this对象) ...

  4. python关键字global和nonlocal总结

    函数中使用全局变量 a = 100 b = 200 def func(): def sub(): return b return a + b + sub() 执行fun()后返回值为:500 a, b ...

  5. [SDOI2017]数字表格 (莫比乌斯反演)

    链接:https://ac.nowcoder.com/acm/problem/20391来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  6. 前端学习(三十六)promise(笔记)

    一个页面:  头部.用户信息.新闻列表 jquery ajax:  1.$.ajax({    url:'',    dataType:'json', }).then(res=>{    //r ...

  7. kotlin中实现匿名内部类

    1.常规的方式实现匿名内部类 valueAnimator.addUpdateListener(object :AnimatorUpdateListener { override fun onAnima ...

  8. Sass-加法

    程序中的运算是常见的一件事情,但在 CSS 中能做运算的,到目前为止仅有 calc() 函数可行.但在 Sass 中,运算只是其基本特性之一.在 Sass 中可以做各种数学计算 (一).加法 加法运算 ...

  9. htmlunit填坑

    htmlunit 无头浏览器 爬虫使用填坑: <!-- htmlunit start --> <dependency> <groupId>org.jsoup< ...

  10. 明明不太合适但是还是被用在配置文件和数据传输上的XML

    XML概述: 概念: 可扩展的标记语言. 功能: 作为数据本地存储的格式.(已淘汰)作为结构化存储的方式,不如数据库效率高.目前一部分移动设备中还在使用. 作为网络中传输数据的格式.(已淘汰)作为网络 ...