• 异常处理——Java面向对象基础(26)


    一、异常相关概念

    1.异常(Exception):异常是程序在执行的过程中所产生的问题。Java语言的健壮性-异常就是其中一种体现。

    在程序代码提供了异常处理机制

    2.异常调用过程

    二、异常是如何产生的

    throw new 具体的异常类型();

    注意:一个方法如果拥有异常处理的包裹,则其不一定需要返回值这解决了,一些数据表达冲突的情况。

     

     

    三、异常是如何处理的

    异常处理的语法:

    try{

               编写代码(提前预知会出现异常)

    }catch(异常类型 异常变量名称){

               异常处理……  

    }catch(……){

     

    }

    异常处理的几种方式:

    1、捕获这个异常,不让它沿着调用栈继续向下抛出;

    2、捕获这个异常,并继续向下抛出;

    3、不捕获这个异常,从而导致方法从调用栈中被弹出,异常对象继续抛给调用栈下面的方法。

    4、捕获过程中没有出现任何异常,那么整个程序会正常执行。后续代码也会正常执行。

    解释几个关键字的含义:

    try 用来指定一块预防所有“异常”的程序;

    catch 子句紧跟在 try 块后面,用来指定你想要捕捉的“异常”的类型; 

    throw 语句用来明确地抛出一个“异常”;

    throws 用来标明一个成员函数可能抛出的各种“异常”;

    finally 为确保一段代码不管发生什么“异常”都被执行一段代码;

    三、finally关键字作用

    finally 为确保一段代码不管发生什么“异常”都被执行一段代码。应用场景:释放资源

    注意:

    1、当finally关键字遇到return时,先执行return返回动作(没有真正的返回),再执行finally中的代码块,最后再回去执行return真正返回操作。

    2、当finally遇到break关键字,和遇到return原理差不多。

    3、特殊:当finally遇到System.exit(0); 不会去执行了,说白了System.exit(0)最终大哥。

    四、异常类型

    |- Throwable(所有异常类的父类)

      |-Error(错误)

      |-Exception(异常)

         |-RuntimeException(运行时异常)

             |-StringIndexOutOfBoundsException: 字符串下标越界异常

          |-ArrayIndexOutOfBoundsException: 数组下标越界异常

             |-NullPointerException: 空指针异常

             |-ArithmeticException: 数字计算异常

             |-ClassCastException: 类型转换异常

             |-InputMismatchException: 输入错误匹配异常 

             ……

         |-CheckException(自己定义的、实际没有此类)编译期受检异常

             |-ParseException: 日期解析异常

             |-ClassNotFoundException: 类加载异常

             |-InterruptedException: 中断异常

             |-SQLException: SQL异常

             |-IOExceptionIO异常

            ……

    注意:

        1、RuntimeException运行时异常,可以处理也可以不处理。如果不处理它会沿着调用栈继续向下抛出,直至JVM为止。

        2、直接继承Exception编译期受检异常,它必须做处理。要么try catch处理,要么向上继续抛。在方法名后用throws 关键字声明函数可能要抛出的所有异常

    编译期受检异常语法:

    访问修饰 访问参数 方法名称(……) throws 异常类型,………{

         存在编译期受检异常的代码

    五、自定义异常

    1.自定义运行时异常

    需要继承RuntimeException

     

     2.自定义编译期受检异常

    直接继承Exception

     六、抛出异常的顺序

    1.抛出的异常顺序,子类异常必须在父类之前

     

     2.异常在同一层时,只会抛出第一个产生的异常,之后的异常不会出现。

     3.当异常不再同一层时,不同的异常都会被显示

     

  • 相关阅读:
    当td中文字过长时,显示为省略号
    清除页面缓存
    在dwr的调用类里获取请求信息
    解决利用hibernate连接mysql时无法插入汉字的问题
    MySql的数据库方言问题
    解决IE升级后必须以管理员运行的问题
    form表单里的button调用js函数
    EF多租户实例:演变为读写分离
    EF多租户实例:快速实现分库分表
    EF多租户实例:如何快速实现和同时支持多个DbContext
  • 原文地址:https://www.cnblogs.com/Unlimited-Rain/p/12538627.html
Copyright © 2020-2023  润新知