一、
1.异常处理基本概念:
异常是指在程序运行过程中由代码产生的一种错误。在不支撑异常处理的程序设计语言中,每一个运行时错误必须由程序员手动控制。这样不仅会增大工作量,还很麻烦。Java语言中的异常处理机制避免了这些问题,在处理过程中,把程序运行时错误的管理带到了面向对象的世界中。
在软件开发过程中,程序中出现错误是不可避免的。错误按不同的性质,可以分为不同的种类,有些错误能在系统编译时或运行时发现,有些错误不能被系统发现,这时就需要我们及时发现并改正程序中的错误,并对不同的错误采用不同的处理方式。
Java系统根据错误严重程度的不同,将程序运行时出的错分为两类:错误和异常。
在Java语言中,异常处理是通过try、catch、finally、throw、throws五个关键字来实现的
1 try
2 {
3 要检查的语句序列
4 }
5 catch(异常类名 形参对象名)
6 {
7 异常发生时的处理语句序列
8 }
9 finally
10 {
11 一定会运行的语句序列
12 }
其中1~4行是try块,5~8行是catch块,9~12行是finally块。其中try块可能抛出一个或多个异常,若发生异常,则程序的运行便中断,并抛出由“异常类”所产生的“对象”。同时该代码块后面也指定了它后面的catch语句所捕获的异常类型块,try语句块用来启动Java的异常处理机制。可能抛出异常的语句包括throw语句、调用可能抛出异常的方法的方法调用语句,这些都应该包含在这个try语句块中; catch语句块紧跟在try 语句块的后面,用来指定需要捕获的异常类型,当try语句块中的某条语句在执行时一旦出现异常,此时被启动的异常处理机制就会自动捕获到它,然后流程自动跳过产生异常的语句后面的所有尚未执行的语句,系统就直接跳到catch语句中,查看是否为匹配的异常类。若抛出的异常对象属于catch后面括号内欲捕获的异常类,则catch会捕获此异常,然后进人到catch块内继续执行;无论try程序块是否捕获到异常,或者捕获到的异常是否与catch后面括号里的异常相同,最后一定会运行finally块里的程序代码; finally 块的代码运行结束后,程序再转到try catch- finally块之后的语句继续运行。
2.抛出异常
根据异常类型不同,抛出异常的方法也不同,具体分为:系统自动抛出的异常,指定方法抛出的异常。指定方法抛出的异常需要使用关键字throw或throws来明确指定在方法内抛出异常。语法格式为 throw 由异常类所产生的对象;或者 [修饰符] 返回值类型 方法名 ([参数列表]) throws 异常列表类
public class A9_3 {
public static void main(String[] args) {
int a=5,b=0;
try {
if(b==0)
throw new ArithmeticException(); //抛出异常
else {
System.out.println(a+"/"+b+"="+a/b); //若不抛出异常,则运行此行
}
}
catch(ArithmeticException e){
System.out.println("异常:"+e+"被抛出了!");
e.printStackTrace(); //输出当前异常对象的堆栈使用轨迹
}
}
}
运行结果:
异常:java.lang.ArithmeticException被抛出了!
java.lang.ArithmeticException
at Text9.A9_3.main(A9_3.java:9)