java异常(例外)处理
来源:互联网 发布:非负矩阵分解应用 编辑:程序博客网 时间:2024/04/29 15:28
◇ 捕获例外(异常):
当Java运行时系统得到一个例外对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一例外的代码。找到能够处理这种类型的例外的方法后,运行时系统把当前例外对象交给这个方法进行处理,这一过程称为捕获(catch)例外。这是积极的例外处理机制。如果Java运行时系统找不到可以捕获例外的方法,则运行时系统将终止,相应的Java程序也将退出。
try{
......
}catch( ExceptionName1 e ){
......
}catch( ExceptionName2 e ){
......
}
......
}finally{
......
}
◇ try
捕获例外的第一步是用try{…}选定捕获例外的范围,由try所限定的代码块中的语句在执行过程中可能会生成例外对象并抛弃。
◇ catch
每个try代码块可以伴随一个或多个catch语句,用于处理try代码块中所生成的例外事件。catch语句只需要一个形式参数指明它所能够捕获的例外类型,这个类必须是Throwable的子类,运行时系统通过参数值把被抛弃的例外对象传递给catch块。
在catch块中是对例外对象进行处理的代码,与访问其它对象一样,可以访问一个例外对象的变量或调用它的方法。getMessage( )是类Throwable所提供的方法,用来得到有关异常事件的信息,类Throwable还提供了方法printStackTrace( )用来跟踪异常事件发生时执行堆栈的内容。例如:
try{
......
}catch( FileNotFoundException e ){
System.out.println( e );
System.out.println( "message: "+e.getMessage() );
e.printStackTrace( System.out );
}catch( IOException e ){
System.out.println( e );
}
catch 语句的顺序:
捕获例外的顺序和catch语句的顺序有关,当捕获到一个例外时,剩下的catch语句就不再进行匹配。因此,在安排catch语句的顺序时,首先应该捕获最特殊的例外,然后再逐渐一般化。也就是一般先安排子类,再安排父类。
◇ finally
捕获例外的最后一步是通过finally语句为例外处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。
◇ 声明抛弃例外:
如果一个方法并不知道如何处理所出现的例外,则可在方法声明时,声明抛弃(throws)例外。这是一种消极的例外处理机制。
1.声明抛弃例外
如果在一个方法中生成了一个例外,但是这一方法并不确切地知道该如何对这一异常事件进行处理,这时,一个方法就应该声明抛弃例外,使得例外对象可以从调用栈向后传播,直到有合适的方法捕获它为止。
声明抛弃例外是在一个方法声明中的throws子句中指明的。例如:
public int read () throws IOException{
......
}
throws子句中同时可以指明多个例外,之间由逗号隔开。例如:
public static void main(String args[]) throws
IOException,IndexOutOfBoundsException {…}
2.抛出例外
抛出例外就是产生例外对象的过程,首先要生成例外对象,例外或者由虚拟机生成,或者由某些类的实例生成,也可以在程序中生成。在方法中,抛出例外对象是通过throw语句实现的。
例如:
IOException e=new IOException();
throw e ;
可以抛出的例外必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误:
throw new String("want to throw");
- java异常(例外)处理
- C#自定义异常处理(自定义例外)
- C++基础知识(八)例外、异常处理
- oracle例外(异常)
- ORACLE例外(异常)
- PL/SQL_处理例外2(非预定义异常、自定义异常)
- 例外-异常
- oracle(7)例外处理
- PL/SQL_处理例外1(预定义例外)
- Oracle 10g处理例外(即sql异常)学习一——预定义例外,即常见例外
- Oracle 10g处理例外(即sql异常)学习二——自定义例外和非预定义例外
- oracle pl/sql 例外(exception) 异常
- orcle数据库中的例外(异常)
- Effective Java(2nd Edition) Item 57 仅为例外条件使用异常(译文)
- (Java)异常处理
- 第四讲 Java的例外处理和I/O流
- JAVA程序设计 第四章数组、字符串和例外处理
- 第四讲 Java的例外处理和I/O流
- 【python】线程、进程、程序以及python示例。
- HDU1502:Regular Words(大数DP)
- tcp客户端与服务端之间的通信实例(参考了孙鑫老师的书籍)
- 【C++第四课】---类的封装
- Java调用DOS命令实现定时关机功能
- java异常(例外)处理
- 2014淘宝笔试一题详解
- AIX5.3服务器主备模式解决内存耗尽总结
- mysql不能设置当前时间为默认的方法
- 程序编译运行时头文件或动态链接库的查找
- poj3614-贪心、优先队列
- C# 编译器选项 /platform(指定输出平台)32位程序运行到x64平台的问题
- 远程连接Raspberry Pi(数莓派)图形用户界面(X Window)
- poj_1152_An Easy Problem!(进制)