异常是一个事件,发生在程序运行期间,干扰了正常的指令流程;java异常都是对象;
在java中所有异常都有一个共同的祖先Throwable(可抛出)。它有两个子类:Exception(异常)和Error(错误);二者都是java异常处理的重要子类;
错误:是程序无法处理的错误,表示运行应用程序中的较严重的问题;主要有VirtualMachineError(java虚拟机运行错误)、OutOfMemoryError(JVM不再有继续执行操作所需要的内存错误)、类定义错误(ClassDefFoundError)等此时JVM一般会选择线程终止。这些错误是不可查的
异常:是程序可以处理的异常;
Exception 有一个重要的子类:RuntimeException有算数异常、空指针异常、下标越界异常、数字格式转换异常、类型转换异常、非法参数异常等
错误和异常的区别就是一个不可处理一个可以处理;
java的异常可以分为可查异常和不可查异常
可查异常:编译器要求必须处理的异常;除运行时异常极其子类外其他的异常极其子类均为可查异常;
不可查异常:编译器不要求必须处理的异常;包括运行时异常与其子类及错误;
主要处理方式为抛出异常和捕获异常;
捕获异常:try-catch;try-catch-finally;try-finally;
try块:用于尝试会出现异常的代码块,有异常则捕获;后接catch或多个catch块,如果没有catch块则必须跟finally块;
catch块:用于处理try捕获到的异常;
finally块:无论是否捕获到异常都会执行;但有4个例外:
1.在finally块中发生了异常;
2.在前面的代码中使用了System.exit()退出程序
3.程序所在的线程死亡
4.关闭cpu
抛出异常:
throws(在方法名后用)和throw(出现在方法体里)