某些情况,由单个代码段可能引起多个异常。处理这种情况,你可以定义两个或更多的catch子句,每个子句捕获一种类型的异常。当异常被引发时,每一个catch子句被依次检查,第一个匹配异常类型的子句执行。当一个catch语句执行以后,其他的子句被旁路,执行从try/catch块以后的代码开始继续。下面的例子设计了两种不同的异常类型:
// Demonstrate multiple catch statements.
class MultiCatch {
public static void main(String args[]) {
try {
int a = args.length;
System.out.println(“a = ” + a);
int b = 42 / a;
int c[] = { 1 };
c[42] = 99;
} catch(ArithmeticException e) {
System.out.println(“Divide by 0: ” + e);
} catch(ArrayIndexOutOfBoundsException e) {
System.out.println(“Array index oob: ” + e);
}
System.out.println(“After try/catch blocks.”);
}
}

该程序在没有命令行参数的起始条件下运行导致被零除异常,因为a为0。如果你提供一个命令行参数,它将幸免于难,把a设成大于零的数值。但是它将导致ArrayIndexOutOf BoundsException异常,因为整型数组c的长度为1,而程序试图给c[42]赋值。

下面是运行在两种不同情况下程序的输出:
C:>java MultiCatch
a = 0
Divide by 0: java.lang.ArithmeticException: / by zero After try/catch blocks.
C:>java MultiCatch TestArg
a = 1
Array index oob: java.lang.ArrayIndexOutOfBoundsException After try/catch blocks.

当你用多catch语句时,记住异常子类必须在它们任何父类之前使用是很重要的。这是因为运用父类的catch语句将捕获该类型及其所有子类类型的异常。这样,如果子类在父类后面,子类将永远不会到达。而且,Java中不能到达的代码是一个错误。例如,考虑下面的程序:
/* This program contains an error.
A subclass must come before its superclass in a series of catch statements. If not,unreachable code will be created and acompile-time error will result.
*/
class SuperSubCatch {
public static void main(String args[]) {
try {
int a = 0;
int b = 42 / a;
} catch(Exception e) {
System.out.println(“Generic Exception catch.”);
}
/* This catch is never reached because
ArithmeticException is a subclass of Exception. */
catch(ArithmeticException e) { // ERROR – unreachable
System.out.println(“This is never reached.”);
}
}
}

如果你试着编译该程序,你会收到一个错误消息,该错误消息说明第二个catch语句不会到达,因为该异常已经被捕获。因为ArithmeticException 是Exception的子类,第一个catch语句将处理所有的面向Exception的错误,包括ArithmeticException。这意味着第二个catch语句永远不会执行。为修改程序,颠倒两个catch语句的次序。

七. 多线程编程
1.线程的概念
2.Java线程模型
3.主线程
4.创建线程
5.创建多线程
6.isAlive()和join()的使用
7.线程优先级
8.线程同步
9.线程间通信
10.线程死锁
11.线程的挂起、恢复和终止

Java 多重catch语句的使用相关推荐

  1. Java try catch语句详解

    在实际应用中,对于错误的处理是极其重要的,任何程序都很难做到百分百完美,程序中可能存在大量未知问题,所以程序开发时一定要对各种问题进行相应的处理,而 Java 提供的异常处理机制可以帮用户更好地解决这 ...

  2. java多层catch语句_Java异常之catch语句块

    今天在阅读项目代码时看到如下奇怪的代码,以为是竖线 | 可以作为多类型赋值,经过网上搜索才知道是Java SE 7新增的功能:一个catch捕获多种类型的异常.原文是Java官方的文档,现翻译如下.红 ...

  3. 开课吧课堂之如何使用多重catch语句

    某些情况,由单个代码段可能引起多个异常.处理这种情况,你可以定义两个或更多的catch子句,每个子句捕获一种类型的异常. 当异常被引发时,每一个catch子句被依次检查,第一个匹配异常类型的子句执行. ...

  4. 1.5 try catch语句详解

    在实际应用中,对于错误的处理是极其重要的,任何程序都很难做到百分百完美,程序中可能存在大量未知问题,所以程序开发时一定要对各种问题进行相应的处理,而 Java 提供的异常处理机制可以帮用户更好地解决这 ...

  5. java try catch嵌套_解析Java中未被捕获的异常以及try语句的嵌套使用

    Java未被捕获的异常 在你学习在程序中处理异常之前,看一看如果你不处理它们会有什么情况发生是很有好处的.下面的小程序包括一个故意导致被零除错误的表达式. class Exc0 { public st ...

  6. try catch语句 java_深入剖析java的try…catch…finally语句

    一.前言 前些天参加面试的时候有一道题: public classtest { public static voidmain(String[] args){try{return; }finally{ ...

  7. 1.7 Java try catch finally语句

    在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行.例如,程序在 try 块里打开了一些物理资源(如数据库连接 ...

  8. Java try catch finally语句

    在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行.例如,程序在 try 块里打开了一些物理资源(如数据库连接 ...

  9. Java中try catch语句的用法

    在 Java 中通常采用 try catch 语句来捕获异常并处理.语法格式如下:  try {     逻辑代码块1; } catch(ExceptionType e) {     处理代码块1; ...

最新文章

  1. String创建对象的个数 StringBuffer
  2. python由列表中提取出来的浮点型字符串不能直接转换成整形
  3. Codeforces 1110 简要题解
  4. caffe linux 教程,CentOS7安装Caffe的教程详解
  5. P2278-[HNOI2003]操作系统【堆】
  6. java代码自动生成的插件_如何使用插件生成自定义Java 8代码
  7. 全国计算机vb二级题型,全国计算机二级考VB机试常见题型汇总.doc
  8. 投影参数_色彩极致3-怎么调校投影机的参数
  9. win32开发(对话框启动)
  10. vb将excel数据导入mysql_用VB做怎么将Excel数据导入SQL数据库中
  11. 爱普生Epson L301 清零软件+图解教程
  12. 雅虎市值_也许不算雅虎! 刚出来
  13. 前端学习笔记(js基础知识)
  14. 怎么在微信公众号文章里添加附件(如word、excel、pdf等)
  15. 简单使用github上的节操播放器
  16. 计算机信息技术奥赛实践,2018信息学奥赛 成绩_浅谈中学信息学奥林匹克竞赛课程的建设...
  17. Failed to invoke the method sayHello in the service com.itheima.service.HelloService.
  18. 著名音乐app网易云推广运营策划案
  19. 网孔型初级维修电工实训考核装置
  20. eplan怎样创建和修改图框_EPLAN P8项目创建

热门文章

  1. 【DSP开发】【VS开发】YUV与RGB格式转换
  2. linux Ubuntu apache2 伪静态设置
  3. 安卓手机Charles抓包显示unknown原因及解决办法
  4. Linux系统下提升进程优先级的办法
  5. [云炬ThinkPython阅读笔记]2.6 字符串运算
  6. ustc小道消息20220120
  7. 科大星云诗社动态20210506
  8. 【云炬mysql数据库笔记】 Work1
  9. 云炬随笔20211011
  10. python dataframe loc函数_python pandas.DataFrame.loc函数使用详解