一、异常处理的分类(执行过程中的异常分类)
1、Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源 耗尽等严重情况。比如:StackOverflowError和OOM。一般不编写针对性 的代码进行处理。
2、Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使 用针对性的代码进行处理。例如:
(1)空指针访问
(2)试图读取不存在的
(3)网络连接中断
(4)数组角标越界
二、异常概念与异常体系结构
1、运行异常:是指编译器不强制要求处理的异常
2、编译时的异常:是指编译器要求必须处置的异常
三、常见异常
1、ArrayIndexOutOfBoundsException
public class IndexOutExp {
public static void main(String[] args) {
String friends[] = {"lisa","bily","kessy"};
for (int i = 0; i < 5 ; i++){
System.out.println(friends[i]);
//fridens[4]?
}
System.out.println("\nthis is the end");
}
}
运行结果:
2、NullPointerException
public class NullRef {
int i = 1;
public static void main(String[] args) {
NullRef t = new NullRef();
t = null;
System.out.println(t.i);
}
}
运行结果:
3、ArithmeticException
public class DivideZero {
int x;
public static void main(String[] args) {
int y ;
DivideZero c = new DivideZero();
y = 3/c.x;
System.out.println("program ends ok!");
}
}
运行结果:
4、ClassCastException
public class OrderWork {
public static void main(String[] args) {
Object obj = new Object();
OrderWork order;
order = (OrderWork) obj;
System.out.println(order);
}
}
代码如下:
四、Java异常处理的机制
1、try-catch-finally
try:捕获异常的第一步是用try{…}语句块选定捕获异常的范围,将可能出现 异常的代码放在try语句块中。
catch (Exceptiontype e): 在catch语句块中是对异常对象进行处理的代码。每个try语句块可以伴随 一个或多个catch语句,用于处理可能产生的不同类型的异常对象。
finally:不论在try代码块中是否发生了异常事件,catch语句是否执 行,catch语句是否有异常,catch语句中是否有return, finally块中的语句都会被执行。
例一:
代码如下:
public class IndexOut {
public static void main(String[] args) {
String friends [] = {"lisa","lili","momo"};
try {
for (int i = 0;i < 5; i++){
System.out.println(friends[i]);
}
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("index err");
}
System.out.println("\nthis is the end");
}
}
结果如下:
2、throws+异常类型
五、总结
上游排污,下游治污