当将异常缓存在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中的链式异常是什么?相关推荐

  1. java链式编程_Java 中的链式编程

    前言 ​在写项目的时候,有一个实体类有好多个属性,new 出来之后需要不停的使用setXXX( )方法,效率低而且代码可读性差,查询了下发现可以实现实体类的链式编程. public class Use ...

  2. java调用android_Java及Android中常用链式调用写法简单示例

    本文实例讲述了Java及Android中常用链式调用写法.分享给大家供大家参考,具体如下: 最近发现,目前大火的许多开源框架中,大多都使用了一种"(方法).(方法).(方法)"的形 ...

  3. java异常类中属于非检测异常的是_下列java语言的常用异常类中,属于检测异常的是()_学小易找答案...

    [单选题]在Word 2010的编辑状态,对当前文档中的文字进行"字数统计"操作,应当使用的菜单是( ) [单选题]客运员领带统一,领带夹夹在衬衣的( )钮扣之间. [单选题]文件 ...

  4. mysql日期隐式转换_mysql中的隐式转换

    什么隐式类型转换? 在MySQL中: 当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容.则会发生转换隐式 也就是说,MySQL会根据需要自动将数字转换为字符串,将字符串转换数字.看到 ...

  5. 异常检测中的三种异常:点异常、上下文异常、集合异常

    文章目录 直观解释 点异常 上下文异常 集合异常 see also Reference 直观解释 异常检测问题遇到的异常可以分为三类,分别是点异常(Point Anomalies).上下文异常(Con ...

  6. java开发原则_java开发中,大家处理异常的原则是什么,是如何处理的?

    展开全部 最熟悉的陌生人:异常 异常的类e5a48de588b63231313335323631343130323136353331333361326365型Throwable - Exception ...

  7. java显式构造函数_C++中的显式构造函数

    有如下一个简单的复数类: classClxComplex {public: ClxComplex(doubledReal=0.0,doubledImage=0.0){m_dReal=dReal;dIm ...

  8. mysql 游标异常_mysql中的游标和异常捕捉

    # 第一个用 LOOP方式进行循环的游标测试代码 DROP PROCEDURE IF EXISTS cursor_test; CREATE PROCEDURE cursor_test() BEGIN ...

  9. 一文搞懂异常检测中离群、异常、新类、开集、分布外检测异同

    点击上方"迈微AI研习社",选择"星标★"公众号 重磅干货,第一时间送达 选自丨机器之心 MMLab@NTU 你是否也曾迷惑于「离群检测,异常检测,新类检测,开 ...

  10. mysql 关闭隐式转换_Mysql中的隐式转换

    在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引,下面分析两种隐式转换的情况看表结构phone为int类型,name为varchar类型 EXPLAIN ...

最新文章

  1. Webpack 的简单介绍
  2. 基础篇verilog-‘timescale的解释
  3. STL 中的链表排序
  4. 设计模式学习笔记--Memento 备忘录模式
  5. 防盗链与token运用
  6. Socket编程入门
  7. SLAM会议笔记(二)Real-time DEMO
  8. 【图算法】(3) 网络的基本静态几何特征(二),附networkx完整代码
  9. 怎么查询网站最近的cdn服务器,如何查看网站是否cdn加速
  10. 深度思考 | 比低水平效勤奋重要百倍
  11. 开篇词 | 程序员的成长课
  12. 如何使用jupyter notebook的PPT插件rise进行分页显示
  13. html5流水账,流水记账.html
  14. 如何在sRGB和CIEXYZ之间进行转换
  15. windows 工具命令 cmd
  16. java转义字符之换行字符
  17. python批量删除文件前缀名_Python3-去除目录中相同的文件名前缀
  18. 基于Leaflet的leaflet-sidebar侧边栏组件集成
  19. 使用ADODB在C#
  20. 猴子吃桃的逆推c语言算法,经典算法题每日演练 猴子吃桃

热门文章

  1. 微信小程序支付 java
  2. Linux C 父子进程 与 有名管道
  3. 使用Seafile搭建私人网络硬盘、个人网盘,百度网盘
  4. DL基石-卷积神经网络(CNN)简易教程
  5. 倪震华教授版《振动力学》学习(一)
  6. python爬取二手房库存,存数据库,生成折线图(下)
  7. 【附源码】计算机毕业设计java英语单词记忆系统设计与实现
  8. Rust入坑指南:亡羊补牢
  9. unity3d中利用代码脚本控制按钮的开关
  10. HCIA笔记-----ACL访问控制列表