Java(异常处理)
运⾏期出现
观察错误的名字和⾏号最重要
Java异常是Java提供的⽤于处理程序中错误的⼀种机制。
所谓错误是指在程序运⾏的过程中发⽣的⼀些异常事件(如:除0溢出,数组下标越界,所要读取的⽂件不存在)。
设计良好的程序应该在异常发⽣时提供处理这些错误的⽅法,使得程序不会因为异常的发⽣⽽阻断或产⽣不可预见的结果。
Java程序的执⾏过程中如出现异常事件,可以⽣成⼀个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运⾏时系统,这个过程称为抛出(throw)异常。
当Java运⾏时系统接收到异常对象时,会寻能处理这⼀异常的代码并把当前异常对象交给其处理,这⼀过程称为捕获(catch)异常。
public class Test{
public static void main(String[] args){
String friends[]={"yxd","sxd","yyy"};
for(int i=0;i<4;i++){
try catch的使用方法System.out.println(friends[i]);
}
System.out.println("\nthis is the end");
}
}
Error:称为错误,由java虚拟机⽣成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。
Exception:所有异常类的⽗类,其⼦类对应了各种各样可能出现的异常事件,⼀般需要⽤户显式的声明或捕获。
Runtime Exception:⼀类特殊的异常,如被0除,数组下标超范围等,其产⽣⽐较频繁,处理⿇烦,如果显式的声明或捕获将会对程序可读性和运⾏效率影响很⼤。因此由系统⾃动检测并将它们交给缺省的异常处理程序(⽤户可不必对其处理)。
Java异常处理通过5个关键字try、catch、throw、throws、finally进⾏管理。基本过程是⽤try语句块抱住要监听的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统⽣成的异常在Java运⾏时⾃动抛出。你也可以通过throws关键字在⽅法上声明该⽅法要抛出异常,然后在⽅法内部通过throw抛出异常对象。finally语句块会在⽅法执⾏return之前执⾏。
try语句
try{...}语句指定了⼀段代码,该段代码就是⼀次捕获并处理例外的范围。
在执⾏过程中,该段代码可能会产⽣并抛出⼀种或⼏种类型的异常对象,它后⾯的catch语句要分别对这些异常做相应的处理。
如果没有例外产⽣,所有的catch代码段都被略过不执⾏。
catch语句
在catch语句块中是对异常进⾏处理的代码,每个try语句块可以伴随⼀个或多个catch语句,⽤于处理可能产⽣的不同类型的异常对象。
在catch中声明的异常对象封装了异常事件发⽣的信息,在catch语句块中可以使⽤这个对象的⼀些⽅法获取这些信息。
getMessage()⽅法,⽤来得到有关异常事件的信息。
printStackTrace()⽅法,⽤来跟踪异常事件发⽣时执⾏堆栈的内容。
finally语句
finally语句为异常处理提供⼀个统⼀的出⼝,使得在控制流程转到程序的其他部分以前,能够对程序的状态作统⼀的管理。
⽆论try指定的程序块中是否抛出例外,finally所指定的代码都要被执⾏。
通常在finally语句中可以进⾏资源的清除⼯作,如:
关闭打开的⽂件
删除临时⽂件
使⽤⾃定义异常⼀般有如下步骤:
1、通过继承java.lang.Exception类声明⾃⼰的异常类。
2、在⽅法适当的位置⽣成⾃定义异常的实例,并⽤throw语句抛出。
3、在⽅法的声明部分⽤throws语句声明该⽅法可能抛出的异常。
注意:重写⽅法需要抛出与原⽅法所抛出异常类型⼀致异常或不抛出异常。
1、避免过⼤的try块,不要把不会出现异常的代码放到try块⾥⾯,尽量保持⼀个try块对应⼀个或多个异常。
2、细化异常的类型,不要不管什么类型的异常都写成Exception。
3、catch块尽量保持⼀个块捕获⼀类异常,不要忽略捕获的异常,捕获到后要么处理,要么转译,要么重新抛出新类型的异常。
4、不要把⾃⼰能处理的异常抛给别⼈。
5、不要⽤atch参与控制程序流程,异常控制的根本⽬的是处理程序的⾮正常情况。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论