首页 > 代码库 > Why Throws 异常
Why Throws 异常
异常首先得提几个问题:
1、异常为什么会出现,从哪里来, (异常从何而来)
答: 当你调用某些方法时,首先得为这些方法做一些 预先的处理, 比如 当你用getName()获取 对象的一个名字属性,如果你所调用的对象是空的话,
那么程序就不可 执行,但是又不能告诉你, 所以用一个错误来提示你. 这个错误异常“躲”在了该方法中,一旦调用,异常错误就跑出来了
2、为什么能让java程序停止,有什么方法规避呢? (异常的出现 为什么会让程序停止)
答: 程序 一个步骤 出错,程序就会被 强制 禁止。 方法: 1、使用try catth去捕获异常 2、将错误交给父类去处理,throws exception
3、我们为什么 能在程序之前 就能抛出异常,从而使程序继续进行下去 (这就是重点了)
答:在虚拟机运行时候抛出的异常就是 运行时异常,包括 NullPointExcetion,ClassCastException,IndexOutOfBoundsException。
总之:它肯定是存在的,我们有时在想,我根本就没有在我自己定义类里面的方法上添加异常,可是它也会抛出异常,这是因为类在程序判断的时候,
满足了某些条件,于是程序就自动实例化了一个错误的对象,然后把这个错误给抛了出来,比如说NullPointerException空指针异常,
你可能会说这个错误的话,我找不到它定义在哪里啊?可是你要知道的是,你的方法终究是要运行的,当你运行的时候,
虚拟机在执行方法的时候它是会进行检查的,它检查的时候当然也是调用方法了,而在调用之前,它会把对你将要调用的对象进行检查,
如果有错就会实例化一个NullPointerException出来,检查是很容易理解的事情,就像你实例化了一个类,然后在运行的时候,
对这个类的一些信息进行判断,只是jvm检查的比较复杂,但是思想肯定是一致的。
。
重点: 异常的分析
异常被打印的顺序是:
1、先打印父类的异常信息 2、再打印子类的异常信息
因为对象实例化的过程也就是这个顺序,所以打印的时候顺序也是一样的,当然如果你已经对错误进行了处理的话,、
那么自然父类的错误就不会被打印出来了,所以说当出现异常的时候,那些最先打印出来的都是父类的信息,你出错的调用位置应该是在下边子类中。
by----半抄
Why Throws 异常