1:异常和错误都是Throwable的子类
2:异常的处理方式
首先是虚拟机检测到异常,然后创建异常对象并抛出,
然后抛给调用者,调用者没有对应异常的处理,所以,又抛给了main方法;
main方法中也没有处理的方法,抛给虚拟机JVM,然后虚拟机就会做两个处理,在控制台打印错误信息的位置,终止程序的运行
3:关键字throw
4:关键字throws,方法内部有异常,需要告诉外面,内部抛出什么异常,就使用throws告诉外界什么异常。
5:通过throw抛出异常对象之后,然后在方法声明时通过throws告诉外界的调用者说有问题,然后在调用者main方法上也需要使用throws告诉main的调用者JVM说我自己有问题;最后虚拟机把异常信息打印在控制台上,并终止程序的运行。
上面的处理方式也属于一种吧,是虚拟机自己的处理方式。
6:异常的另一种处理方式
使用try,catch进行处理,然后打印出异常信息,最后控制台执行,并执行完程序。
具体的实行过程如下,注意发生异常之后开始跳转到catch;
7:多个catch的时候需要注意的,同一个方法中抛出的异常包含有继承关系的异常时候,子类异常需要写在前面;
8:关键字finally:之后的代码必须执行,用于后续释放操作系统的资源;
下面的代码表示的是不可以执行,
9:在main方法中调用抛出异常的方法时,需要用try,catch捕获异常,而不是自己也通过throws抛出异常,因为如果一直这样做的话,会导致程序终止。
10:异常分为编译异常和运行时异常,运行时异常在使用throw抛出时候,是不需要使用throws来声明的。
11:空指针异常也是一种运行时异常;运行时异常都需要我们使用throw抛出异常,且在方法开始不需要使用throws声明main方法中调用也不需要使用try catch来捕获异常。
12“继承中的异常,父类抛出了异常,子类可以不抛出,如果抛出的话小于等于父类抛出的异常;父类不抛出异常,子类一定不可以抛出异常,如果子类方法中调用了抛出异常的方法,那么只能通过trycatch进行处理
13:Throwable中的三个方法
14:自定义异常