异常(不定期修改)

                                                            异常

⭐概念:又称之为例外,指的是程序在执⾏过程中,出现的⾮正常的情况,最终会导致JVM的⾮正常停⽌。

   (异常指的不是语法错误,语法错误编译无法通过,也不能产生字节码文件,不能运行)

异常体系

  Throwable体系(父类):

        Error(子):不能处理的错误,只能事先避免。

           例如:堆栈溢出

        Exception(子):异常,可以纠正代码,使程序继续运行。

               |-运行时异常/不检查异常

               |-编译时异常/非运行时异常/已检查异常

常用方法

              1)String getMessage():获取发生异常的原因

              2)String toString():后去异常的类型和异常描述信息

常见运行时异常/不检查异常

    NullPointerException:空指针异常

    ArrayIndexOutOfBoundException:数组下标越界异常

    NoSuchElementException:没有这个元素异常

    ClassCastException:类型转换异常

    ConcurrentModificationException:并发修改异常

    IllegalArgumentException:非法参数调用异常

    IndexOutOfBoundsException:下标越界异常

 

  (产生原因:a.一般由程序员逻辑错误引发的,应该从逻辑角度尽可能避免这类异常的发生。

                       b.遇到此类异常,程序中可以选择捕获处理,也可以不处理。

                       c.在正常编译阶段不会出现这种报错,运行阶段才会提示问题.)

 

编译时异常/非运行时异常/已检查异常

      常见异常类型

          IOException:IO异常

          FileNotFoundException:文件未找到异常

          ClassNotFoundException:类未找到异常

          ParseExpection:格式化异常

          UnsupportedEncodingException:不支持字符编码异常

          产生原因:

             a.在编译时期,就会检查没如果没有处理异常,则编译失败.

             b.此类异常,程序中必须进行处理.

 

异常处理

     🐬异常处理的五个关键字:try、catch、finally、throw、throws

                      try-catch:捕获并处理异常

                      throw:抛出异常(创建异常)

                      throws:声明有可能出现的异常

                      finally:在任何情况下(特殊情况排除)都必须执行的代码

                    (可以try-catch-finally这样使用)

 

    🐬抛出异常:thow

              a.使用位置:方法(类)内声明一个具体的异常信息。

              b.注意:

                  ①.如果产生了问题,我们就会使用throw将异常抛出,也就是将问题返回给方法的调用者.

              c.处理异常的方式:

                  ①.捕获异常 - try/catch

                  ②.声明异常 - throws

 

                 

   🐬声明异常: throws

          a.使用位置: 通常在一个方法(类)上,声明能抛出的异常信息.

          b.特点:出现异常,自己不作处理,让调用者来处理.

          c.throws声明异常的思路

                ①.当前方法不知道如何处理这种类型的异常,该异常应该由上一级的调用者处理.

                ②.如果main方法也不知道如何处理这种异常,也可以使用throws声明抛出异常,最终该异常会交给JVM处理.

                ③.JVM对异常的处理方法是,打印异常的跟踪信息,并终止程序运行.

        d. 方法重写 - 异常的声明限制(使用情况)

               前提:必须在父子类关系中

                子类重写父类的方法,方法名、参数返回值必须一致的情况下会造成方法的重写。

              子类和父类方法可以不一致的地方:

                      访问权限:子类 大于等于 父类

                      异常声明:子类 小于等于 父类

 

     🐬捕获异常:try - catch

   a.使用位置:在方法中使用try-catch可以处理异常

   b.特点:有针对行的进行捕获异常,可以对出现的异常进行指定方式处理

   c.执行流程
         ①.程序从try里面的代码开始执行

         ②.出现异常,就会跳转到对应的catch中去执行

         ③.执行完毕后,程序还可以继续往下执行

   d.注意

         ①.异常存在父子类关系,catch抓取异常时需要先抓取子类异常再抓取父类异常.

         ②.try只需要有一个,catch可以有多个

    🐬finally

    a.使用位置:存在方法中

    b.一般用于程序一定要执行的地方

         例如:关闭JDBC连接、关闭流

    c.finally和return的执行顺序

       ①.当try代码块和catch代码块中有return,finally任然会被执行.

       ②.执行try或catch时代码块中有return,那么都一定会先执行finally语句.

       ③.finally语句一定执行在return语句之前.

自定义异常类

 1)自定义异常

  a.可继承编译时异常类:Exception

  b.可继承运行时异常类:RuntimeException

 2)实现步骤

  ①.定义异常类

  ②.继承运行时异常 / 编译时异常

  ③.提供构造方法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值