异常处理的过程:
案例:
控制台异常信息:(点击蓝色的跳转就可以了)
声明异常throws:(继续向上抛)
捕获异常 try...catch:
如果异常出现的话,会立刻终止程序,所以我们得处理异常:
1. 该方法不处理,而是声明抛出,由该方法的调用者来处理(throws)。 (上面)
2. 在方法中使用 try-catch 的语句块来处理异常。
注:对于把异常抛出,或者不处理,都会导致Java虚拟机立即停止运行,写在后面的代码更笨执行不了,只有对异常进行了处理(try,catch),才会即便在抛出异常的情况下,也会执行后面的代码。
多catch:
没有catch时:
finally: (必须执行的语句)
return返回值问题:
1.finally有返回值:
2.finally没有返回值:
分析:
对于对于try-catch来说,在执行return语句之前,会先执行finally语句,如果finally语句里面0还有return就会返回,不在执行try-catch里面的return,反之,在执行完后finally语句里面的 内容后,会再执行try或者catch里面的语句
错误流:(红色的)(不会停止程序)
抛出异常throw和自定义异常:
空指针异常:一个引用类型的变量,这个变量的值是NULL,没有具体的对象,如果此时变量去调用方法或者属性的时候,就会发生空指针异常。
编译期异常:是必须处理的异常,程序里面处理的代码抛出的异常就是编译器异常,这种异常需要上抛,如果嫌麻烦,直接抛出运行期异常就可以了,这样就可以不用上抛了,运行期异常会在控制台在程序运行期间抛出。