java 异常体系与异常处理
异常体系
1. 运行时异常
ArithmeticException>算术异常 -
Eg:
NullPointerException>空指针异常-一个为null的东西-调用方法或属性
ArrrayIndexOutOfBoundsException> 索引超出指定范围
ClassCastException>发生在强制转型
IllegalArgumentException>参数非法
2. 编译时异常
FileNotFoundException
3. 错误
Error:错误-程序设计问题
OutOfMemoryError>堆内存溢出
内存占用:1、000、000、000x4=4、000、000、000B
内存占用:10、000、000、000x4=40、000、000、000B
因为总内存为:4x1024Mx1024KBx1024B=4、294、967、296B远小于40、000、000、000B,所以内存崩溃。
注意:垃圾自动回收机制>当占用的内存没有被使用时,系统会自动回收此内存空间。
-我不断创建按钮,但是内存占用基本不动。
StackOverflowError>栈内存溢出
通过不断调用方法而不断进行压栈导致栈内存溢出。
*如何测栈的深度
异常处理
1. try-catch-finally
程序的思路
程序进入try语句时,当遇见异常时转而进入catch语句时
注意:不要滥用try、catch语句,不能屏蔽需要报出来的异常
* printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。(这是白话解释,比较容易理解)
Finally>最后-始终都会执行-关闭资源
2. throw
修改代码后通过