• 9 异常机制


    1 异常的定义及类型

      定义:在程序运行过程中出现的意外事件,导致程序中断执行。

      java.lang.Throwable是所有错误和异常的父类。

       --Error:程序运行过程中出现的致命的,严重的错误,无法通过异常处理使程序正常执行。

      --Exception:是所有异常类的父类。

      java中的异常可以分为两类:

      1)运行时异常:不捕获也可以通过编译。

        ArithmeticException:算术错误情形,如以零作除数

        ArrayIndexOutOfBoundsException:数组下标越界

        NullPointerException:(空指针异常)尝试访问 null 对象成员

        ClassCastException: 类型转换异常,主要在强制转换时发生

        NumberFormatException: 数字转换异常

        InputMismatchException:    输入的数据类型与所需类型不匹配异常

        ....

      2)检查异常:必须捕获否则无法通过编译

        ClassNotFoundException: 类找不到(类无法加载)异常

        IOException: 操作IO流出现的异常信息

        ...

    2 异常处理

      Java的异常处理是通过五个关键字来实现的: try catchfinallythrowsthrow

       捕获异常:try 执行可能产生异常的代码

       catch 捕获异常

       finally 无论是否发生异常,代码总能执行

       声明异常:throws 声明方法可能要抛出的各种异常

       抛出异常:throw 手动抛出异常

      异常对象中常用的方法

       * printStackTrace():打印异常堆栈跟踪信息(类,消息和异常跟踪信息)

       * toString():异常信息(类和消息)

       * getMessage():异常消息(异常消息)

      常见异常处理结构:

      1)Try...catch

      语法:

      try{

        //可能出现异常的代码

      }catch(异常类型 异常对象名){

        //处理异常的代码;

      }

      执行过程:

      当try中的代码异常发生时抛出一个异常对象,该异常对象与catch中异常类型进行匹配,匹配成功进入catch块,否则不执行catch中代码(相当于异常未被处理)

    程序只有当异常处理成功后才能继续执行。

      2)Try...catch...catch

      语法:

      try{

        //可能出现异常的代码

      }catch(异常类型1 对象名){

        //处理代码1;

      }catch(异常类型2 对象名){

        //处理代码2

      }....

      执行过程:try中代码出现异常时,抛出一个异常对象,将该异常对象与catch块中异常类型依次匹配,匹配成功执行其下catch块中代码。

      注意:异常类型的范围应该有小到大,先放子类异常类型,再父类异常类型。

    3)Try...catch...finally

      语法:

      try{

        //可能出现异常的代码

      }catch(异常类型1 对象名){

        //处理代码1;

      }catch(异常类型2 对象名){

        //处理代码2

      }finally{

        //会被执行的代码

      }

      finally块中代码一定会执行,如果在trycatch块中存在retrun语句,先执行finally中的代码,然后执行return语句。

      finally中代码只有在退出程序(退出虚拟机)时才不会执行---->System.exit()

      4)Try...finally

      语法:

      try{

        //可能出现异常的代码

      }finally{

        //一旦会执行的代码

      }

      finally块中代码经常用于资源的释放,比如数据连接的关闭,IO流的关闭等。

    3 throwsthrow的区别

      如果在处理异常的过程中希望将异常抛出,就需要throwsthrow

      throwsthrow的区别:

      1)位置不同:throws用于方法声明时,throw用于方法体中

      2)类型不同(内容不同):

      throws后跟的异常类型,throw后跟的异常对象

      3)作用不同

      throws在方法声明时告知调用者该方法存在的异常类型,throw在方法体内抛出某个具体的异常对象。

      经常throwsthrow结合使用。

    4 自定义异常

      当JDK提供的异常类型无法满足需要时,就需要自定义异常。

      自定义异常的步骤:

      1)自定义异常类:继承ExceptionRuntimeException

      2)在自定异常类的构造方法中调用父类的构造,传入自定义异常信息

      3)创建自定义异常对象

      4)使用throw将异常对象抛出

  • 相关阅读:
    搭建SSM框架 Demo
    Mybatis (ParameterType) 如何传递多个不同类型的参数
    IDEA如何将本地项目上传到码云
    VUE项目
    Oralce(三)特殊符号
    NodeJS and Intellij IDEA
    Handler
    Netty 框架 (一) channelDisconnected、channelClosed两个事件区别
    数据库索引
    Websocket
  • 原文地址:https://www.cnblogs.com/nicepanda/p/6979332.html
Copyright © 2020-2023  润新知