java 链式异常,Java中的链式异常是什么?
当将异常缓存在catch块中时,可以使用throw关键字(用于抛出异常对象)将其重新抛出。
重新抛出异常时,您可以抛出相同的异常,而无需将其调整为-try {
int result = (arr[a])/(arr[b]);
System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result);
}catch(ArithmeticException e) {
throw e;
}
链接异常
您还可以将捕获到的异常包装在新异常中,然后将其抛出(在catch块中)。这样做时,第一个异常负责第二个异常,即,一个异常导致另一个。
因此,当您将缓存的异常包装在另一个异常中并引发异常时,这称为异常链接或异常包装,通过执行此操作,您可以调整异常,并抛出更高级别的异常来维护抽象。try {
int result = (arr[a])/(arr[b]);
System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result);
}catch(ArrayIndexOutOfBoundsException e) {
throw new IndexOutOfBoundsException();
}
示例
在以下Java示例中,我们的代码demoMethod()可能会抛出ArrayIndexOutOfBoundsException和ArithmeticException。我们在两个不同的catch块中捕获了这两个异常。
在catch块中,我们通过包装在更高的异常中来抛出两个异常,而另一个直接抛出。import java.util.Arrays;
import java.util.Scanner;
public class RethrowExample {
public void demoMethod() {
Scanner sc = new Scanner(System.in);
int[] arr = {10, 20, 30, 2, 0, 8};
System.out.println("Array: "+Arrays.toString(arr));
System.out.println("Choose numerator and denominator(not 0) from this array (enter positions 0 to 5)");
int a = sc.nextInt();
int b = sc.nextInt();
try {
int result = (arr[a])/(arr[b]);
System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result);
}catch(ArrayIndexOutOfBoundsException e) {
throw new IndexOutOfBoundsException();
}catch(ArithmeticException e) {
throw e;
}
}
public static void main(String [] args) {
new RethrowExample().demoMethod();
}
}
输出结果Array: [10, 20, 30, 2, 0, 8]
Choose numerator and denominator(not 0) from this array (enter positions 0 to 5)
0
4
Exception in thread "main" java.lang.ArithmeticException: / by zero
at myPackage.RethrowExample.demoMethod(RethrowExample.java:16)
at myPackage.RethrowExample.main(RethrowExample.java:25)
输出结果Array: [10, 20, 30, 2, 0, 8]
Choose numerator and denominator(not 0) from this array (enter positions 0 to 5)
124
5
Exception in thread "main" java.lang.IndexOutOfBoundsException
at myPackage.RethrowExample.demoMethod(RethrowExample.java:17)
at myPackage.RethrowExample.main(RethrowExample.java:23)
java 链式异常,Java中的链式异常是什么?相关推荐
- java链式编程_Java 中的链式编程
前言 在写项目的时候,有一个实体类有好多个属性,new 出来之后需要不停的使用setXXX( )方法,效率低而且代码可读性差,查询了下发现可以实现实体类的链式编程. public class Use ...
- java调用android_Java及Android中常用链式调用写法简单示例
本文实例讲述了Java及Android中常用链式调用写法.分享给大家供大家参考,具体如下: 最近发现,目前大火的许多开源框架中,大多都使用了一种"(方法).(方法).(方法)"的形 ...
- java异常类中属于非检测异常的是_下列java语言的常用异常类中,属于检测异常的是()_学小易找答案...
[单选题]在Word 2010的编辑状态,对当前文档中的文字进行"字数统计"操作,应当使用的菜单是( ) [单选题]客运员领带统一,领带夹夹在衬衣的( )钮扣之间. [单选题]文件 ...
- mysql日期隐式转换_mysql中的隐式转换
什么隐式类型转换? 在MySQL中: 当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容.则会发生转换隐式 也就是说,MySQL会根据需要自动将数字转换为字符串,将字符串转换数字.看到 ...
- 异常检测中的三种异常:点异常、上下文异常、集合异常
文章目录 直观解释 点异常 上下文异常 集合异常 see also Reference 直观解释 异常检测问题遇到的异常可以分为三类,分别是点异常(Point Anomalies).上下文异常(Con ...
- java开发原则_java开发中,大家处理异常的原则是什么,是如何处理的?
展开全部 最熟悉的陌生人:异常 异常的类e5a48de588b63231313335323631343130323136353331333361326365型Throwable - Exception ...
- java显式构造函数_C++中的显式构造函数
有如下一个简单的复数类: classClxComplex {public: ClxComplex(doubledReal=0.0,doubledImage=0.0){m_dReal=dReal;dIm ...
- mysql 游标异常_mysql中的游标和异常捕捉
# 第一个用 LOOP方式进行循环的游标测试代码 DROP PROCEDURE IF EXISTS cursor_test; CREATE PROCEDURE cursor_test() BEGIN ...
- 一文搞懂异常检测中离群、异常、新类、开集、分布外检测异同
点击上方"迈微AI研习社",选择"星标★"公众号 重磅干货,第一时间送达 选自丨机器之心 MMLab@NTU 你是否也曾迷惑于「离群检测,异常检测,新类检测,开 ...
- mysql 关闭隐式转换_Mysql中的隐式转换
在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引,下面分析两种隐式转换的情况看表结构phone为int类型,name为varchar类型 EXPLAIN ...
最新文章
- Webpack 的简单介绍
- 基础篇verilog-‘timescale的解释
- STL 中的链表排序
- 设计模式学习笔记--Memento 备忘录模式
- 防盗链与token运用
- Socket编程入门
- SLAM会议笔记(二)Real-time DEMO
- 【图算法】(3) 网络的基本静态几何特征(二),附networkx完整代码
- 怎么查询网站最近的cdn服务器,如何查看网站是否cdn加速
- 深度思考 | 比低水平效勤奋重要百倍
- 开篇词 | 程序员的成长课
- 如何使用jupyter notebook的PPT插件rise进行分页显示
- html5流水账,流水记账.html
- 如何在sRGB和CIEXYZ之间进行转换
- windows 工具命令 cmd
- java转义字符之换行字符
- python批量删除文件前缀名_Python3-去除目录中相同的文件名前缀
- 基于Leaflet的leaflet-sidebar侧边栏组件集成
- 使用ADODB在C#
- 猴子吃桃的逆推c语言算法,经典算法题每日演练 猴子吃桃