1.1 异常概念
1.1.1异常的继承体系
- 学习异常处理的目的
- 不能让程序因为一个小小的问题而导致整个程序崩溃。
- 什么是异常
- 在程序编译或运行过程中出现的问题则称为异常,最终会导致JVM非正常停止。
- 异常的继承体系
- Throwable类是Java语言中所有错误或异常的超类
- Error:错误
- Exception:异常(编译时异常、运行时异常)
在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处 理异常的方式是中断处理。
1.1.2 Throwable常用方法
- public String getMessage():获得异常信息字符串。
- public String toString():获得异常详细信息字符串:类全名:异常原因。
- public printStackTrace();追踪异常的栈信息。(追踪异常的根源)
即打印异常的详细信息。包含了异常的类型,异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace。
注意:在实际开发过程中,出现异常可以把异常的简单类名,拷贝到API中去查。
/*
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at day05Test01.PrintStackTraceDemo01.main(PrintStackTraceDemo01.java:6)
异常出现的位置:at day05Test01.PrintStackTraceDemo01.main(PrintStackTraceDemo01.java:6)
异常的类型:java.lang.ArrayIndexOutOfBoundsException
异常的原因:3
*/
public class PrintStackTraceDemo01 {
public static void main(String[] args) {
int [] arr={12,23,1};
System.out.println(arr[3]);
}
}
public class ExceptionDemo01 {
public static void main(String[] args) {
test02();
}
private static void test01(){
//创建Throwable对象
Throwable t=new Throwable("空指针异常");
//获得异常信息字符串
System.out.println( t.toString());
//获得异常详细信息字符串
System.out.println(t.getStackTrace());
//追踪异常的根源
t.getMessage();
}
private static void test02(){
test01();
}
}
- 异常分类
- 编译时异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。 (如日期格式化异常)
- 运行时异常:runtime异常。在运行时期,检查异常,在编译时期,运行异常不会编译器检测(不报错)。(如数学异常)
1.1.3 异常和错误的区别
异常和错误的区别:
- 错误一般是由操作系统反馈给JVM的,无法针对错误进行处理,只能修改错误行的代码。
- 异常一般是JVM反馈给Java程序,可以针对异常进行处理,如果不处理,则结果和错误一样。
异常和错误的判断:<