Thorwable类是所有异常和错误的超类
2.error是程序无法处理的错误
此类错误一旦发生,JVM虚拟机一般会选择终止线程
exception是程序自身可处理的异常
这种异常分为两大类——运行时异常和非运行时异常
3.运行时异常和非运行时异常
运行时异常都是RuntimeException类及其子类异常.
这些异常必须自定义捕抓 此类异常是可以有选择的处理
非运行时异常是RuntimeException意外的异常,类型上都属于Exception类及其子类
此类异常一旦出现,如果不处理,程序将无法编译通过
该类异常一般情况下由系统检查出来
二、异常的捕抓和处理
JAVA异常处理涉及到五个关键字:
try
catch
finally
throw
throws
1、 异常处理的基本语法 在java中,异常处理的完整语法是: try{ //(尝试运行的)程序代码 }catch(异常类型 异常的变量名){ //异常处理代码 }finally{ //异常发生,方法返回之前,总是要执行的代码 }
2、catch语句后代Throwable类型的参数 表示可以捕抓异常类型
3、catch语句可以有多个,用于匹配异常 一旦匹配上后 就不再与其他catch匹配
4、通常异常推向可以获取异常发生时完整的JVM堆栈信心,以及异常信息和异常发生的原因等
5、finally语句块是紧跟catch语句后的语句块,这个语句块总是会在方法返回前执行,而不管是否try语句是否发生异常
而这个语句块总是在方法返回前执行 其目的和作用就是给程序一个补救的机会 这样又体现出JAVA的健壮性
6、try catch finally 都不能单独使用
7、finally只能有一个 catch可以有多个
8、try catch finally 变量作用域都只在其代码块的内部 分别独立而不能互相访问
想在不同代码块中使用 必须要定义全局变量说
9、在多个catch的情况下,JAVA只会匹配其中一个 匹配顺序从上到下
10、所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常
throw和throws
1.throw是用于方法体内部,用来抛出一个throwable类型的异常
如果抛出的是检查异常,则还应该在方法头部声明方法可能抛出的异常类型
该方法的调用者也必须检查处理所抛出的异常 如果所有方法都层次上抛获取到的异常 最近JVM会进行处理 打印出异常消息和所在的堆栈信息
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。