zoukankan      html  css  js  c++  java
  • 异常(一)

    异常/Exception

    异常知识点

    常见格式:

    try{
        //可能异常代码块
    }catch(捕获的异常类型){
        //异常处理语句
    }finally{
        //一定要执行的代码
        //一般用来关闭关闭流,数据库
    }
    //捕获异常处理

    运行流程

    从上图可以发现finally语句必须执行

    异常的分类如下所示

    1. Thrawable/可抛出的异常

      1. Exception/异常

        1. 编译时异常(受检异常)/Exception下,除了RuntimeException外所有

        2. 运行时异常(非受检异常)/RuntimeException

      2. Error/错误

    注意!

    1. 编译时异常,大多需要我们try-catch;

    2. 运行时异常,不需要强制try-catch,在发现错误后,修改错误(直接解决)。

    常见运行异常:

    名称显示语句
    空指针 NullpointerException
    数组下标越界 ArrayIndexOutOfBoundsException
    转型错误 ClassCastException
    算术异常 ArithmeticException

    printStackTrace();

        e.printStackTrace();
        //打印异常的栈,该方法在Throwable中,其子类没有重写

    在查看printStackTrace()打印出的语句时,从最后往前看

    多个异常的处理

    1. 直接捕获父类异常
    catch(Exception e){}
    //或者
    catch(Thrawable e){}
    2.多个异常依次捕获,多个catch块
    try{
    ​
    }catch(异常1){
    ​
    }catch(异常2){
    ​
    }catch(异常3){
    ​
    }

    注意:

    1. 多个异常依次捕获需要注意异常的顺序

      最大的异常最后,父类异常放在最后处理.

    2. 多个异常捕获,只会根据顺序进入一个catch块

    3.JDK1.8后
    catch(异常1 | 异常2 | 异常3){
    }

    注意:

    在catch中的异常为同级关系,不允许存在父子关系

    其他书写形式

    1. try{
      }finally{
      }
    2. try{
      }catch{
      }catch{
      }finally{
      }
    3. try{
      }catch{
      }catch{
      }

    注意!以下书写方式不正确

    1. try{
      }
    2. finally{
      }

    有趣的练习

    1.

    int x = 1;
    try {
        System.out.println("A");
        return ++ x;
    } catch (Exception e) {
        System.out.println("D");
    } finally {
        System.out.println("B");
        ++x;
    }
    System.out.println("C");
    return x;

    上题的输出结果为

    A
    B
    y = 2

    2.

    String aa = "aa";
    
    try {
        aa = "bb";
        return aa;
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        aa = "cc";  
        return aa;
    }

    上题的输出结果为

    y = cc
  • 相关阅读:
    Android应用程序资源的查找过程分析
    Android应用程序资源管理器(Asset Manager)的创建过程分析
    Android应用程序资源的编译和打包过程分析
    跨平台的高性能的C++通讯库
    函数memstr
    chrome必备插件
    01背包的优化问题
    高精度小结/。。。
    关于日期的计算问题。。。。。
    终于入手了01背包问题!!
  • 原文地址:https://www.cnblogs.com/-Archenemy-/p/11972459.html
Copyright © 2011-2022 走看看