异常处理
什么是异常?
在java程序中可能程序执行意外失败的事件叫做异常
异常出现的情况: 1.内存耗尽了无法进行实例化 2.JVM崩溃 3.数组下标越界异常 4.算术异常 ......
异常体系
1.所有的异常类的祖先是Throwable
2.异常分为两部分:Error和Exception
Error:错误,程序是不能进行处理的
Exception:在程序开发期间,要多这种异常进行处理
--IOException:编译时异常,在编译期间出现的异常
--RunTimeException:运行时异常,在程序运行期间出现的异常
如何处理Exception异常
处理异常的方式:抓抛模型
1.抛:当执行程序的时候,一旦出现异常,就会生成一个对应的异常对象,并将对象抛出
(1)抛的类型:自动抛和手动抛
(2)将异常对象处理交给方法的调用者 ,一旦出现异常,就会生成一个对应的异常对象,并将对象抛出。将来给方法的调用者
2.抓:抓住程序中抛出的异常对象
在java程序运行时收到异常对象,会寻找能够处理这种异常的异常代码,并将当前的异常对象交给其来处理。
怎么抓异常对象呢?
抓的过程就是异常处理的方法 ,java处理异常提供了两种方式
/*第一种方式*/
try{ //自己处理异常 //可能会出现的异常代码 }catch(异常对象1 e){ 处理异常的方式; }catch(异常对象2 e){ 处理异常的方式 }finally{ //一定会被执行的的代码 }
try代码块里面放的是可能会出现的异常代码,同时要明白在try定义的变量 都是局部变量,作用域在try代码块中
catch用来处理异常,自定义打印信息 printStackTrace():打印堆和栈的错误信息(程序出错的位置及原因) getMessage():打印错误信息(错误原因)
catch代码块可定义N个,try中抛出的异常对象从上往下去匹配catch中的异常类型,如果一旦满足,就执行catch里面的代码,执行完成后就跳出所有的catch
如果有多个catch,多个catch的异常对象是并列关系的话,不需要考虑catch,如果有多个catch,多个catch的异常对象是继承关系的话,子类需要在父类的上面
finally可选的代码块,如果finally,不论是否会出现异常,都会执行finally里面的代码 ,就是遇到return,finally里面的代码块也会执行
注意:如果异常处理了,那么后面的代码会继续执行, 运行时异常:可以不显示的进行处理 编译时异常:必须要显示进行异常处理
第二种方式就是通过throw,找别人帮我处理异常
1.在方法的声明处,显示的抛出异常对象类型(委托处理)
2.语法:
public static void test1() throws FileNotFoundException,IOException
3.处理方式:
(1)该方法内出现异常是,会抛出一个异常对象,抛给方法的调用者
(2)异常对象可以一直向上抛,直到抛给main方法,也可以通过try-catch进行显示的处理异常
如何创建自定义异常
1.自定义的异常类需要显示的继承RuntimeException
2.提供一个序列号
3.提供一个无参和有参的构造方法
public class MyException extends RuntimeException{ static final long serialVersionUID = -7034897190745766939L; public MyException() { } public MyException(String mess) { super(mess); } }

浙公网安备 33010602011771号