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. jquery+ajax获取本地json对应数据

    首先,记得导入jquery.js文件. json内容: var obj123=[        {"option":"2,3,9,14,19,24,32",&q ...

  2. redis学习(二)

    简单了解一下 1.build.gradle中添加 依赖  org.springframework.boot:spring-boot-starter-data-redis //定义依赖:声明项目中需要哪 ...

  3. XMPP即时通讯协议使用(七)——利用Strophe实现WebIM及strophe.plugins插件使用

    Strophe简介与Openfire配置 Strophe.js是为XMPP写的一个js类库.因为http协议本身不能实现持久连接,所以strophe利用BOSH模拟实现持久连接. 官方文档: http ...

  4. tensorflow的reshape操作tf.reshape()

    在处理图像数据的时候总会遇到输入图像的维数不符合的情况,此时tensorflow中reshape()就很好的解决了这个问题. 更为详细的可以参考官方文档说明: numpy.reshape reshap ...

  5. 六、SQL语句进行多条件查询,并解决参数为空的情况

    一.SQL语句进行多条件查询,并解决参数为空的情况 QueryEntity query; var whereSql = new StringBuilder("Where 1=1") ...

  6. rabbitmq3.7集群搭建实战

    环境: 3台 centos7.4rabbitmq3.7erlang 22 1. 有几种方式安装,这里使用的yum安装(官方推荐)2. 使用rabbitmq时需要安装erlang,在各个节点上使用vim ...

  7. go语言从例子开始之Example38.排序

    Go 的 sort 包实现了内置和用户自定义数据类型的排序功能.我们首先关注内置数据类型的排序. Example: package main import ( "fmt" &quo ...

  8. 基于vue的移动端web音乐播放器

    声明 以下只是学习完慕课网huangyi老师实战视频课程的笔记内容,仅供个人参考学习使用.如果对Vue2.0实战高级-开发移动端音乐WebApp感兴趣的话,请移步这里:https://coding.i ...

  9. 苹果的AR赌注仍然有很多需要证明的

    苹果公司为开发者主题发布会做准备,其中一个更大的公告很可能是其增强现实平台的新变化.自从去年宣布ARKit以来,这家科技巨头几乎对其对AR的潜力抱有信心. 在很多讨论背后,人们都相信技术的实用性,但在 ...

  10. wxpython总体

    人到夏天就特别懒 from math import * import wx def sin_fun(event): a=text_angle.GetValue() b=sin(radians(floa ...