异常分为俩大类一个是Error类,另一个是Exception类
1.Error类是非常严重的错误会直接导致结束程序
2.Exception类,也就是通常所说的“异常”。主要指编码、环境、用户操作输入出现问题
Exception主要包括两大类,非检查异常(RuntimeException)和检查异常(其他的一些异常)
(一)非检查异常
空指针异常
数组下标越界异常
类型转换异常
算术异常
这些异常JAva虚拟机会自动捕获
(二)检查异常
是逻辑性的错误导致,该异常我们必须手动在代码里添加捕获语句来处理该异常,是我们主要处理的异常
3. try-catch-finally语句
try块:负责捕获异常,一旦try中发现异常,程序的控制权将被移交给catch块中的异常处理程序。
!try语句块不可以独立存在,必须与 catch 或者 finally 块同存
catch块:是如何处理异常,执行完catch块之后程序跳出catch块,继续执行后面的代码。
finally:最终执行的代码,用于关闭和释放
try会抛出很多种类型的异常,由多个catch块捕获多钟错误
先子类再父类
4.throw和throws关键字
throw ----将产生的异常抛出,是抛出异常的一个动作。
一般会用于程序出现某种逻辑时程序员主动抛出某种特定类型的异常
throws----声明将要抛出何种类型的异常
throw与throws的比较
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。