Java 多重catch语句的使用
某些情况,由单个代码段可能引起多个异常。处理这种情况,你可以定义两个或更多的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语句的使用相关推荐
- Java try catch语句详解
在实际应用中,对于错误的处理是极其重要的,任何程序都很难做到百分百完美,程序中可能存在大量未知问题,所以程序开发时一定要对各种问题进行相应的处理,而 Java 提供的异常处理机制可以帮用户更好地解决这 ...
- java多层catch语句_Java异常之catch语句块
今天在阅读项目代码时看到如下奇怪的代码,以为是竖线 | 可以作为多类型赋值,经过网上搜索才知道是Java SE 7新增的功能:一个catch捕获多种类型的异常.原文是Java官方的文档,现翻译如下.红 ...
- 开课吧课堂之如何使用多重catch语句
某些情况,由单个代码段可能引起多个异常.处理这种情况,你可以定义两个或更多的catch子句,每个子句捕获一种类型的异常. 当异常被引发时,每一个catch子句被依次检查,第一个匹配异常类型的子句执行. ...
- 1.5 try catch语句详解
在实际应用中,对于错误的处理是极其重要的,任何程序都很难做到百分百完美,程序中可能存在大量未知问题,所以程序开发时一定要对各种问题进行相应的处理,而 Java 提供的异常处理机制可以帮用户更好地解决这 ...
- java try catch嵌套_解析Java中未被捕获的异常以及try语句的嵌套使用
Java未被捕获的异常 在你学习在程序中处理异常之前,看一看如果你不处理它们会有什么情况发生是很有好处的.下面的小程序包括一个故意导致被零除错误的表达式. class Exc0 { public st ...
- try catch语句 java_深入剖析java的try…catch…finally语句
一.前言 前些天参加面试的时候有一道题: public classtest { public static voidmain(String[] args){try{return; }finally{ ...
- 1.7 Java try catch finally语句
在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行.例如,程序在 try 块里打开了一些物理资源(如数据库连接 ...
- Java try catch finally语句
在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行.例如,程序在 try 块里打开了一些物理资源(如数据库连接 ...
- Java中try catch语句的用法
在 Java 中通常采用 try catch 语句来捕获异常并处理.语法格式如下: try { 逻辑代码块1; } catch(ExceptionType e) { 处理代码块1; ...
最新文章
- String创建对象的个数 StringBuffer
- python由列表中提取出来的浮点型字符串不能直接转换成整形
- Codeforces 1110 简要题解
- caffe linux 教程,CentOS7安装Caffe的教程详解
- P2278-[HNOI2003]操作系统【堆】
- java代码自动生成的插件_如何使用插件生成自定义Java 8代码
- 全国计算机vb二级题型,全国计算机二级考VB机试常见题型汇总.doc
- 投影参数_色彩极致3-怎么调校投影机的参数
- win32开发(对话框启动)
- vb将excel数据导入mysql_用VB做怎么将Excel数据导入SQL数据库中
- 爱普生Epson L301 清零软件+图解教程
- 雅虎市值_也许不算雅虎! 刚出来
- 前端学习笔记(js基础知识)
- 怎么在微信公众号文章里添加附件(如word、excel、pdf等)
- 简单使用github上的节操播放器
- 计算机信息技术奥赛实践,2018信息学奥赛 成绩_浅谈中学信息学奥林匹克竞赛课程的建设...
- Failed to invoke the method sayHello in the service com.itheima.service.HelloService.
- 著名音乐app网易云推广运营策划案
- 网孔型初级维修电工实训考核装置
- eplan怎样创建和修改图框_EPLAN P8项目创建