所谓异常就是程序运行时可能出现的一些错误,比如试图打开一个不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误作出处理。
异常处理:
java采用面向对象的方法来处理异常,处理过程:
1.抛出异常:在执行一个方法时,如发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE
2.捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常,JRE在方法的调用栈中查找,从生成异常的方法开始回溯,知道找到相应的异常处理代码为止。
CheckedException 已检查异常:这一类在编译时就无法通过
RuntimeException 运行时异常:可不必对其处理,系统会自动自动检测处理
捕获异常:try catch finally
try 执行可能产生异常的代码
catch:捕获异常
finally:无论是否发生异常代码总能执行 唯一不执行的情况是exit(1)退出虚拟机
package cn.sxt.exception;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* 测试异常
* @author l
*
*/
public class Test02 {
public static void main(String[] args) {
FileReader reader = null;
try {
reader = new FileReader("d:/a.txt");
char c1 = (char)reader.read();
System.out.println(c1);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(reader!= null){
reader.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
声明异常:throws
声明方法可能要抛出的各种异常
package cn.sxt.exception;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* 使用throws 声明异常
* @author l
*
*/
public class Test03 {
public static void main(String[] args) throws IOException {
readMyFile();
}
public static void readMyFile() throws IOException{
FileReader reader = null;
reader = new FileReader("d:/a.txt");
char c1 = (char)reader.read();
System.out.println(c1);
if(reader!= null){
reader.close();
}
}
}
以上仅简单介绍了一下异常处理,并不全面!