1:异常(Exception)的概念
Java异常时Java提供的用于处理程序中错误的一种机制
2:处理方式
Java是采用面向对象的方式来处理异常的。
3:异常分类:
JDK中定义了很多异常类,这些类对应了各种各样可能出现的异常事件,所有异常对象都是派生于Thorwable类的一个实例。如果内置的异常类不能够满足需要,还可以创建自己的异常类
Error(错误)类 --- 不需要我们管 --- 唯一的办法:重启
Exception 中 Checked Exception是编译器会检查的
RuntimeException编译器不会检查,比如:
1:int a = 1/0;
2: 空指针异常(NullPointerException):,一般是对象为空
3:数组越界(ArrayIndexOutOfBoundsException)
4:对象转化出错(ClassCastException) 可以想判断 e.g: obj instanceof
5:数字格式异常(NumberFormatException)
e.g String str = "153153ag";
Integer i = new Integer(str);
4:异常的处理办法第一种: 捕获异常(try catch finally)
try:
catch:
toString()方法:显示异常的类名和产生异常的原因
getMessage()方法: 只显示产生异常的原因,但不显示类名。
PrintStackTrace()方法: 用来跟踪异常事件发生时堆栈的内容。
-- 这些方法均继承自Throwable类
finally
实例:
文件操作:
这个问题是因为文件可能不存在
代码:
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class TestFileReader { public static void main(String args[]) { FileReader reader = null; try { reader = new FileReader("d:/lp.txt"); char c = (char) reader.read(); char c2 = (char) reader.read(); System.out.println("" + c + c2); } catch (FileNotFoundException e) { e.printStackTrace(); } //这里的两个catch不能换位置 因为IOException是FileNotFoundException的父类 catch (IOException e) { e.printStackTrace(); } finally { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } }
try - catch - finally - return 的执行顺序:
代码:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class TestFileReader { public static void main(String args[]) { String str = new TestFileReader().openFile(); System.out.println(str); } private String openFile() { System.out.println("aaa"); try { FileInputStream fis = new FileInputStream("d:/lp.txt"); int a = fis.read(); System.out.println("bbb"); return "step1"; } catch (FileNotFoundException e) { System.out.println("catching!!"); e.printStackTrace(); return "step2"; } catch (IOException e) { e.printStackTrace(); return "step3"; }finally{ System.out.println("finally"); } } }
结果:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class TestFileReader { public static void main(String args[]) { String str = new TestFileReader().openFile(); System.out.println(str); } private String openFile() { System.out.println("aaa"); try { FileInputStream fis = new FileInputStream("d:/wu.txt"); int a = fis.read(); System.out.println("bbb"); return "step1"; } catch (FileNotFoundException e) { System.out.println("catching!!"); e.printStackTrace(); return "step2"; } catch (IOException e) { e.printStackTrace(); return "step3"; }finally{ System.out.println("finally"); } } }
结果:
结论:1:执行try catch 给返回值赋值
2:执行finally
3:return
5:异常处理办法第二种: throws字句
原文:http://www.cnblogs.com/lipeng0824/p/4488916.html