Java多重捕获块

news2025/1/14 1:10:45

try块后面可以跟随一个或多个catch块。每个catch块必须包含一个不同的异常处理程序。因此,如果您在不同的异常发生时需要执行不同的任务,请使用Java多重捕获块。

需要记住的要点

  • 一次只会发生一个异常,同时只有一个catch块被执行。

  • 所有的catch块必须按照从最具体到最一般的顺序排列,即对于ArithmeticException的catch块必须放在Exception的catch块之前。

多重捕获块的流程图

示例1

让我们看一个简单的Java多重捕获块的示例。

MultipleCatchBlock1.java

public class MultipleCatchBlock1 {        public static void main(String[] args) {                       try{                    int a[]=new int[5];                    a[5]=30/0;                   }                   catch(ArithmeticException e)                    {                     System.out.println("Arithmetic Exception occurs");                    }                   catch(ArrayIndexOutOfBoundsException e)                    {                     System.out.println("ArrayIndexOutOfBounds Exception occurs");                    }                   catch(Exception e)                    {                     System.out.println("Parent Exception occurs");                    }                            System.out.println("rest of the code");        }  }

输出:

Arithmetic Exception occursrest of the code
 

示例2

MultipleCatchBlock2.java

public class MultipleCatchBlock2 {        public static void main(String[] args) {                       try{                    int a[]=new int[5];                                    System.out.println(a[10]);                 }                   catch(ArithmeticException e)                    {                     System.out.println("Arithmetic Exception occurs");                    }                   catch(ArrayIndexOutOfBoundsException e)                    {                     System.out.println("ArrayIndexOutOfBounds Exception occurs");                    }                   catch(Exception e)                    {                     System.out.println("Parent Exception occurs");                    }                            System.out.println("rest of the code");        }  }

输出:

ArrayIndexOutOfBounds Exception occursrest of the code

在这个示例中,try块包含两个异常。但是一次只会发生一个异常,并且只会执行其对应的catch块。

MultipleCatchBlock3.java

public class MultipleCatchBlock3 {        public static void main(String[] args) {                       try{                    int a[]=new int[5];                    a[5]=30/0;                    System.out.println(a[10]);                 }                   catch(ArithmeticException e)                    {                     System.out.println("Arithmetic Exception occurs");                    }                   catch(ArrayIndexOutOfBoundsException e)                    {                     System.out.println("ArrayIndexOutOfBounds Exception occurs");                    }                   catch(Exception e)                    {                     System.out.println("Parent Exception occurs");                    }                            System.out.println("rest of the code");        }  }

输出:

Arithmetic Exception occursrest of the code

示例4

在这个示例中,我们生成了NullPointerException,但没有提供相应的异常类型。在这种情况下,将调用包含父异常类Exception的catch块

MultipleCatchBlock4.java

public class MultipleCatchBlock4 {        public static void main(String[] args) {                       try{                    String s=null;                  System.out.println(s.length());                 }                   catch(ArithmeticException e)                    {                     System.out.println("Arithmetic Exception occurs");                    }                   catch(ArrayIndexOutOfBoundsException e)                    {                     System.out.println("ArrayIndexOutOfBounds Exception occurs");                    }                   catch(Exception e)                    {                     System.out.println("Parent Exception occurs");                    }                            System.out.println("rest of the code");        }  }

输出:

Parent Exception occursrest of the code

示例5

让我们看一个不维护异常顺序(即从最具体到最一般)的异常处理的示例

MultipleCatchBlock5.java

class MultipleCatchBlock5{      public static void main(String args[]){       try{        int a[]=new int[5];        a[5]=30/0;       }       catch(Exception e){System.out.println("common task completed");}       catch(ArithmeticException e){System.out.println("task1 is completed");}       catch(ArrayIndexOutOfBoundsException e){System.out.println("task 2 completed");}       System.out.println("rest of the code...");     }     }
 

输出:

Compile-time error

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实训五:数据库安全控制 - MySQL数据库 - 授权与撤销授权

MySQL数据库 - 授权与撤销授权 第1关:数据库授权任务描述相关知识用户管理授权方式 编程要求测试说明参考代码 第2关:数据库撤销权限任务描述相关知识撤销权限 编程要求测试说明参考代码 第1关:数据库授权 任务描述 本关任务:新…

Ubuntu安装Anaconda详细步骤(Ubuntu22.04.1,Anaconda3-2023.03)

本文主要讲述了在Ubuntu中安装anaconda的具体步骤 准备环境:Ubuntu22.04.1,Anaconda3 1.下载Anaconda3 在清华镜像下载Linux版本的anaconda 清华镜像官网Anaconda下载 我选择的是Anaconda3-2023.03-Linux-x86_64.sh 下载好的Anaconda3-2023.03-Linux-…

拦截器Interceptor及与过滤器Filter的区别

统一拦截–拦截器Interceptor 1.概述 概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行。作用:拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。与过滤器Fil…

【Java|多线程与高并发】设计模式-单例模式(饿汉式,懒汉式和静态内部类)

文章目录 1. 前言2. 单例模式3. 如何保证一个类只有一个实例4. 饿汉式单例模式5. 懒汉式单例模式6. 实现线程安全的懒汉式单例7. 静态内部类实现单例模式8. 总结 1. 前言 设计模式是一种在软件开发中常用的解决复杂问题的方法论。它提供了一套经过验证的解决方案,用…

通信原理概述

通信是指人们通过某种媒介进行信息传递。通过某种介质或通道,将信息从一个地点传递到另一个地点的过程。通信可以是人与人之间的交流,也可以是设备、系统或网络之间的数据传输。 通信信号的分类方法: 1)模拟信号和数字信号(从信号…

数字游戏:如何统计能整除数字的位数?

本篇博客会讲解力扣“2520. 统计能整除数字的位数”的解题思路,这是题目链接。 本题的思路是:取出每一位,判断是否能整除。 如何取出每一位呢?可以采用“mod10除10”的策略。即:每次mod10取出最后一位数,再…

2022年软件测试面试题大全【含答案】

一、面试基础题 简述测试流程: 1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例(等价类划分法、边界值分析法等)。 5、用例评审(…

C++面向对象 this指针 构造函数 析构函数 拷贝构造 友元

C面向对象 面向对象概念类与对象的区别 C中类的设计设计实例实例解释共有和私有类的认识 函数定义函数在类里定义和类外定义区别函数定义实例 C对象模型方案一:各对象完全独立地安排内存的方案方案二:各对象的代码区共用的方案: this指针this指针特点程序编译面向对象程序的过程…

【力扣刷题 | 第十四天】

目录 前言: 7. 整数反转 - 力扣(LeetCode) 面试题 16.05. 阶乘尾数 - 力扣(LeetCode) 总结; 前言: 今天仍然是无固定类型刷题, 7. 整数反转 - 力扣(LeetCode) 给你…

傅氏变换算法

半局积分算法的局限性是要求采样的波形为正弦波。当被采样的模拟量不是正弦波而是一个周期性时间函数时,可采用傅氏变换算法。傅氏变换算法来自于傅里叶级数,即一个周期性函数I(t)可用傅里叶级数展开为各次谐波的正弦项和余弦项之…

D117-72. 编辑距离

题目描述 链接:添加链接描述 跟只考虑删除的完全一样,只不过是dp[i-1][j-1]1 class Solution:def minDistance(self, word1: str, word2: str) -> int:# dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2&…

Qt 将某控件、图案绘制在最前面的方法,通过QGraphicsScene模块实现

文章目录 前言一、效果二、代码实现1.工程文件夹结构2.BackWidget类2.1 backwidget.h2.2 backwidget.cpp 总结 前言 在用Qt做一些应用的时候,有可能遇到和“绘制顺序”相关的问题,即要控制一些控件之间的显示前后问题,在常用的QWidget体系中&…

【数据结构与算法】力扣:翻转二叉树

翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root [2,1,3] 输出:[2,…

云HIS是什么?HIS系统为什么要上云?云HIS有哪些优点?

一、当前医疗行业HIS的现状与发展趋势 1.医院信息系统(HIS)经历了从手工到单机再到局域网的两个阶段,随着云计算、大数据新技术迅猛发展,基于云计算的医院信息系统将逐步取代传统局域网HIS , 以适应人们对医疗卫生服务越来越高的要…

BI-SQL丨角色和用户

角色和用户 在数仓的运维工作中,经常需要为用户开通不同权限的账号,使用户可以正常访问不同的数据,那么这就需要我们了解SQL Server的权限体系。 名词解释 登录名: 用来登录服务器的用户账号,例:sa&…

String类型

前言 之所以介绍是因为基本数据类型是系统中一切操作的基础,就像物理世界中的原子,高楼大厦中的砖瓦。当咱们整明白了这些基本数据类型,使用层面就是挑选和组合的问题了。本文小结下Redis中数据结构和使用场景,如果你有更骚气的挑…

Python中文件的读取

在Python中可以通过内置函数open()、read()和readline()实现文件的读取。 1 打开文件函数 1.1 open()函数的基本用法 open()是Python的内置函数,用来打开指定文件。该函数使用代码如下所示: fin open(words.txt) 其中,参数指定了要打开…

【软件设计师暴击考点】计算机网络知识高频考点暴击系列

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:软件…

NodeJS Request下载图片文件到本地⑩⑦

文章目录 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘前言使用模块创建文件删除文件写入图片案例效果总结 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持&#x1f…

网页前端制作需要哪些基础知识?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言HTML基础知识1 HTM…