Java的异常体系
exception:
ArrayIndexOutofBounds 数组越界
InputMismathchException 输入错误
NullPointerException 空指针异常 引用变量 没有指向有效的对象
ClassCastException 类型转换错误
error:
OutOfMemory(OOM)堆内存耗尽 ,没有可用的堆内存
StackOverFlow 栈溢出 递归函数没有写结束条件
格式:
任务主线程位置+异常类型+描述信息
+调用栈
Java程序如果不处理抛出的异常,那么异常最终抛给JVM;结束Java进程
try:
catch:
finally:一定会被执行,资源释放的代码写在finally块
throw:抛出指定类型的异常对象的
throws:把异常抛给上一级调用函数;
Object
|
Throwable(Java所有异常类型的基类类型)
|
---------------------------------------------------------------------------------
| |
error(JVM错误)不能挽回 Exception(应用程序抛出的异常)可以挽回
StackOverFlowError | |
OOMError RuntimeException 可检测异常
(运行时异常,不可检测) FileNotFoundException
NullPointerException
ClassCastException
总结:
不可检测异常时运行时抛出的异常,编译阶段可以选择性的处理异常
可检测异常是编译阶段必须处理的异常,不然代码不能通过
处理方式:
1:用try catch 块处理;
2:在函数签名的后面通过throws 异常类型
---------------------------------------------------------------
注意事项:
1.同类型异常,放在一块;
2.把循环放在异常里面,异常处理放在外面;
如果自定义一个异常:
1:不可检测类需要继承 RuntimeException
2:可检测类型需要继承Exception