Java对异常的处理,是平行的处理,进行了特定异常的处理后,便不会进入通用异常的处理,出现了未曾显式捕获的异常时,才会进入最宽泛的Excption处理。

具体请看下面代码:

package com.hy.csvdld.util;

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) {
        try {
            throw new SQLException("ABC");
        }
        catch(NullPointerException e) {
            System.out.println("Catch NullPointerException");
        }
        catch(SQLException e) {
            System.out.println("Catch SQLException");
        }
        catch(Exception e) {
            System.out.println("Catch Exception");
        }finally {
            System.out.println("finally block");
        }
    }
}

输出内容:

Catch SQLException
finally block

由上可见,进入SQLException的处理后,程序直接进入finally的处理,而不是进入更宽泛的Exception处理处。

再验证一次:

package com.hy.csvdld.util;

import java.sql.SQLException;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        try {
            List<String> ls=null;

            if(ls.size()==1) {
                throw new SQLException();
            }
        }
        catch(NullPointerException e) {
            System.out.println("Catch NullPointerException");
        }
        catch(SQLException e) {
            System.out.println("Catch SQLException");
        }
        catch(Exception e) {
            System.out.println("Catch Exception");
        }finally {
            System.out.println("finally block");
        }
    }
}

输出:

Catch NullPointerException
finally block

这段程序也昭示了进入一种异常处理就不会进入更宽泛的异常处理段。

再看一段:

package com.hy.csvdld.util;

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) {
        try {
            int i=5,j=0;
            int k=i/j;

            if(k>0) {
                throw new SQLException();
            }
        }
        catch(NullPointerException e) {
            System.out.println("Catch NullPointerException");
        }
        catch(SQLException e) {
            System.out.println("Catch SQLException");
        }
        catch(Exception e) {
            System.out.println("Catch Exception");
            System.out.println(e.getMessage());
        }finally {
            System.out.println("finally block");
        }
    }
}

输出:

Catch Exception
/ by zero
finally block

这段代码明确展示,出现了没有显式捕获的异常,才会进入宽泛的Exception处理。

package com.hy.expired;

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) throws SQLException {
        try {
            int k=5;

            if(k>0) {
                throw new NullPointerException("NPE");
            }else {
                throw new SQLException("T1");
            }
        }
        catch(NullPointerException e) {
            System.out.println("Catch NullPointerException");

            throw new SQLException("T1");
        }
        catch(SQLException e) {
            System.out.println("Catch SQLException");
        }
        catch(Exception e) {
            System.out.println("Catch Exception");
            System.out.println(e.getMessage());
        }finally {
            System.out.println("finally block");
        }
    }
}

输出:

Catch NullPointerException
finally block
Exception in thread "main" java.sql.SQLException: T1
    at com.hy.expired.Main.main(Main.java:19)

这段代码说明,在异常分支中只要进入了一个分支,即使在其中抛出适合下面分支接纳的异常,那个分支也不会进入。

--END-- 2019年11月1日21:24:36

【Java】异常的平行处理的更多相关文章

  1. 浅谈java异常[Exception]

    学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...

  2. 基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?

    本文转载自  java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...

  3. Java异常体系及分类

    上图是基本的java异常体系结构. 主要分为2大类:Error和Exception 1.Error:描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象,一般是由虚拟 ...

  4. Java异常之自定义异常

    哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...

  5. 第11章 Java异常与异常处理

    1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...

  6. java 异常

    1.java异常 2.自定义抛出 3.运行时异常,程序有问题,让使用者可以改' ' 4.return  和  throw的区别 return 符合函数要求的值    throw  有问题的时候用它结束 ...

  7. 3.Java异常进阶

    3.JAVA异常进阶 1.Run函数中抛出的异常 1.run函数不会抛出异常 2.run函数的异常会交给UncaughtExceptionhandler处理 3.默认的UncaughtExceptio ...

  8. 2.Java异常学习

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

  9. java异常架构图 和几个面试题

    1.java异常架构图 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被 ...

  10. 黑马----JAVA异常

    黑马程序员:Java培训.Android培训.iOS培训..Net培训 黑马程序员--JAVA异常 一.JAVA异常有三种语句块:try语句块.catch语句块.finally语句块. 1.try语句 ...

随机推荐

  1. linux 服务器常规巡检并生成报表(一)

    背景 最近接到一个需求要求每天巡检各台业务设备,并导出报表,但一想到设备有N台,一台台每天巡检这样的重复劳作实在是太伤神了,因此决定写一个脚本来搞定这件事. 首先,第一个要解决的问题是批量服务器执行命 ...

  2. SQL性能优化思路

    1. 尽可能把数据的存储和计算放入Memory而不是Disk,且减少IO操作,比如运用Redis等缓存技术 2. 对数据表进行精心设计,特别是大数据表,对常用数据字段进行适当的冗余,尽可能避免分表导致 ...

  3. 系统---《windows + ubuntu双系统》

    安装 Windows + Ubuntu双系统 不是第一次安装 Windows + Ubuntu双系统了,每一遇见的问题都不一样,收获也不一样. 制作U盘的部分截图: 电脑的基本配置截图:

  4. Java基础-异常处理机制 及异常处理的五个关键字:try/catch/finally/throw /throws

    笔记: /** 异常处理机制: 抓抛模型 * 1."抛", 一旦抛出,程序终止! printStackTrace()显示异常路径! * 2."抓", 抓住异常 ...

  5. 【C++/html版 代码 : 暴力破解数字红包 】-- 只要有编译器或者,不看运气,用手速敲代码说话,多人合作效果更佳!

    需求分析: 或者是更大的范围! 是不是很捉急!运气背点不就over了! C++版: #include <stdio.h> #include <stdlib.h> #includ ...

  6. 六、vue基础--过滤器定义

    七.过滤器定义 1.使用:{{username|strip}}.<a :href="url|strip">百度</a> 2.定义:都是定义一个函数,这个函数 ...

  7. 基于RestOn智能睡眠监测器的睡眠监测系统

    一.项目地址为: https://github.com/linqian123... 二.项目功能概述: 该项目实现的是一个基于RestOn智能睡眠监测器的睡眠监测系统.RestOn智能睡眠检测器通过W ...

  8. 5-修改windows的远程桌面端口3389

    一.注意点 1.Windows远程桌面端口默认是3389,是一个高危端口,所以需要改为其他的: 2.修改完注册表后,要重启机器,才能生效: 二.操作步骤 1.打开注册表 命令:regedit 2.进入 ...

  9. easyui-filebox上传图片到阿里

    应用场景:在fixbox图片上传时在预览图片img标签底下点击按钮触发一下函数 参考:https://www.cnblogs.com/awzf/p/9843814.html js //修改该时上传产品 ...

  10. Java8-Synchronized-No.01

    import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util ...