异常处理

什么是异常?

在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);
        }
}

 

posted @ 2021-03-01 17:42  山石满棠  阅读(107)  评论(0)    收藏  举报