【Java】异常的平行处理
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】异常的平行处理的更多相关文章
- 浅谈java异常[Exception]
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...
- 基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?
本文转载自 java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...
- Java异常体系及分类
上图是基本的java异常体系结构. 主要分为2大类:Error和Exception 1.Error:描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象,一般是由虚拟 ...
- Java异常之自定义异常
哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...
- 第11章 Java异常与异常处理
1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...
- java 异常
1.java异常 2.自定义抛出 3.运行时异常,程序有问题,让使用者可以改' ' 4.return 和 throw的区别 return 符合函数要求的值 throw 有问题的时候用它结束 ...
- 3.Java异常进阶
3.JAVA异常进阶 1.Run函数中抛出的异常 1.run函数不会抛出异常 2.run函数的异常会交给UncaughtExceptionhandler处理 3.默认的UncaughtExceptio ...
- 2.Java异常学习
1.Java异常的概念 异常的例子 1.除法就是一个需要捕获异常的例子,除数又可能是0 异常处理的基本流程如下 一旦发生异常,就使得程序不按照原来的流程继续的运行下去 a.程序抛出异常 try{ th ...
- java异常架构图 和几个面试题
1.java异常架构图 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被 ...
- 黑马----JAVA异常
黑马程序员:Java培训.Android培训.iOS培训..Net培训 黑马程序员--JAVA异常 一.JAVA异常有三种语句块:try语句块.catch语句块.finally语句块. 1.try语句 ...
随机推荐
- FlowPortal BPM多汇报线的设置及使用
1.在组织结构中设置多汇报线 2.流程中使用汇报线 3.流程节点上使用汇报线 流程节点默认启用流程中指定的汇报线,若流程中的某个节点需要启用特殊的汇报线,可通过设置节点业务属性实现.
- MUI底部导航栏切换效果
首先是html代码: <nav class="mui-bar mui-bar-tab"> <a href="view/templates/home/ho ...
- php使用播放插件播放m3u8,mp4,flv格式的视频
一.这里我主要是播放m3u8的视频,有两款比较好的插件,swise和ckpalyer,我介绍的是ckplayer,这是在pc端播放的,并且是需要flash支持的,不过现在的最新浏览器都是默认安装的 二 ...
- 彻底弄懂HTTP缓存机制及原理-转载
首先附上原文地址,非常感谢博主大神的分享彻底弄懂HTTP缓存机制及原理 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基 ...
- Mongodb 的ORM框架 Morphia 注解 之 @Reference
public class BlogEntry { private String title; private Date publishDate; private String body; privat ...
- MySQL全同步复制基于GR集群架构实现(Centos7)
目录 一. 理论概述 概述 二. 部署 向组加入新节点 测试 三.总结 一. 理论概述 概述 本案例操作的是针对于MySQL的复制类型中的全同步复制,对几种复制类型简单总结下: 异步复制:MySQL默 ...
- 《基于Scyther的秘钥建立协议设计》-------摘抄整理
本篇论文额主要创新点: 利用Scyther软件,通过对一个不安全的秘钥建立协议逐步添加并验证安全属性,最终建立一个安全的秘钥建立协议. 通过形式化分析软件设计秘钥建立协议课可以提高协议设计效率,减 ...
- MySQL5.7安装详解及常见安装问题解决
数据库安装 Python开发使用mysql数据库5.5版本以上(django2.0之后放弃mysql5.5之前的支持),在mysql版本当中5.7之前的版本都有.exe或者.msi的可执行安装文件,但 ...
- 哲学家就餐问题 C语言实现
场景: 原版的故事里有五个哲学家(不过我们写的程序可以有N个哲学家),这些哲学家们只做两件事--思考和吃饭,他们思考的时候不需要任何共享资源,但是吃饭的时候就必须使用餐具,而餐桌上的餐具是有限的,原版 ...
- python爬虫伪装技术应用
版权声明:本文为博主原创文章,转载 请注明出处: https://blog.csdn.net/sc2079/article/details/82423865 -写在前面 本篇博客主要是爬虫伪装技术的应 ...