——- android培训、java培训、期待与您交流! ———-
1,异常概述
异常就是不正常的意思,指程序中出现的不正常情况。
2,异常情况的划分
Throwable:
Error(严重的):一般不对其进行编写针对性代码处理。
特点:是同Jvm抛出的严重性的问题。
通常出现重大问题如:运行的类不在在或者内存溢出等。
需修改程序。
Exceptoion(非严重的):用针对性的方式进行处理。
特点:需要处理,通常有两种方式:
(a)通过 try catch finally代码块
(b)通过throws在函数上声明
3,异常处理的格式:
try{
可能发生异常的代码;
}
catch(捕获异常类的对象 异常类引用变量){
处理代码;
}
finally{
一定要执行的语句;(通常用于关闭资源)
}
可以仅存在try和catch代码块或者try和finally代码块。
finally代码块特点:只在一种情况下不执行:System.exit(0)。
体现
public class IODemo {
public static void main(String[] args) {
FileReader fr = null;
FileWriter fw = null;
try {
fw = new FileWriter("d:\\en.txt");
fr = new FileReader("c:\\en.txt");
char [] ch = new char[1024];
int len = 0;
while ((len = fr.read(ch) )!= -1) {
fw.write(ch,0,len);
fw.flush();
}
} catch (Exception e) {
System.out.println("失败");//处理异常
}
finally{
if (fw!=null)
try {
fw.close(); //处理异常
} catch (Exception e2) {
}
if(fr!=null)
try {
fr.close(); //finally代码块里面关闭资源
} catch (Exception e2) {
}
}
}
}
4,throw和throws的区别
(a)throws使用在函数上,并且后面跟的异常类,可以跟多个,用逗号隔开
(b)throw使用在函数内;后面跟的是异常对象;只能抛出一个异常对象名;表示抛出异常,由方法体内的语句处理
体现
class Demo{
public static int method(int[] arr,int index){
if(arr == null){
throw new NullPointException("数组为空");
}
if(index>arr.length){
throw new ArrayIndexOutOfBoundException("数组索引越界");
}
return arr[index];
}
}
5,异常的注意事项
(a)当异常被捕捉了以后,处理好异常,下面的语句还会继续执行
(b)当函数中异常发生,代表这个函数就已经结束了
(c)异常不能同时发生
(d)功能中有几个异常,那么就对应的就有几个catch
6,处理异常的几条原则
(a)函数内容如果抛出需要检测的异常,那么函数上必须要声明; 否则必须在函数内用try catch捕捉,否则编译失败。
(b)如果调用到了声明异常的函数,要么try catch要么throws,否则编译失败。如果调用的是复写父类的函数抛出异常,那么调用者只能抛出父类同样的异常,或者父类异常的子集
(c)功能内容可以解决,用catch;解决不了,用throws把异常告诉调用者,由调用者解决 。