zoukankan      html  css  js  c++  java
  • 有关java中的try{}catch(){}的讲解

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/qq_38225558/article/details/82054100
     

    try {
         可能出现异常的代码(包括不会出现异常的代码)
    } catch (Exception e) {          //()里为接收try{}代码块中出现异常的类型
         如果出现异常时的处理方式
    }

    try-catch的执行顺序:

    ①从 try{ } 代码块中第一行开始执行,执行到出现异常的代码,jvm会创建一个异常对象
    ②判断catch中声明的异常类型是否能捕捉到jvm创建的异常对象
           i:  能捕捉到:直接跳到catch代码块中执行。  不会结束程序,继续从catch代码块后面的代码执行
          ii:  不能捕捉到:直接打印异常信息并结束程序
    ③try{} 中没有出现任何异常,把try中的所有代码执行完,跳过catch继续程序

    注意:

    1.能被catch捕捉到的条件 ==》try中创建的异常对象的类型与catch中声明的类型一致,或者是catch中声明的类型的子类。

    2.如果只有一个捕捉指定类型的catch 只能捕捉对应类型的异常对象。  如果try中创建了其他类型的异常,捕捉不到。Jvm来处理异常

    3.try{}代码块中存在多行代码会抛出异常的情况下,遇到第一个异常,后面代码的异常 只会被catch捕捉到异常信息但都将不会被执行

    4.那么我们如何才能处理try{}中的每一个异常呢??

      ① 写多个catch : 每一个catch处理一种异常        ==>    try{ }catch(){ }catch(){ }catch(){ }
           效果:当try中出现了异常,直接跳到第一个catch处判断,是否能捕捉。
                a:能捕捉:直接处理。  然后跳过trycatch往后执行
                b:不能捕捉:跳到下一个catch继续判断。如果下一个能捕捉,重复第一步的效果
                c:所有catch都不能捕捉 ==> 交给jvm处理:结束程序,在控制台打印异常信息
      ② 写一个catch  要求:catch中的异常类型必须是try中抛出的所有异常的父类
            
        注意事项:写多个catch时,下边的catch声明的异常类型不能是上边的catch声明的子类。
                          多个catch时,异常父类必须在下边。   (没有继承关系时,就不用考虑此情况)

    try{  }catch(){  }catch(){  }...finally{  }                   (catch可以有多个,也可以没有 ==》 try{ }finally{ })

    特点:写在finally代码块中代码,一定会被执行到
    注意:①执行了 return    也会执行finally
               ②但 执行 System.exit(0)   就不会再执行finally了!!!

    ex1: (此时 Integer in = new Integer("1");  不会出现异常的情况下)

    ex2: (此时 Integer in = new Integer("A1");  出现异常的情况下)

    ex3:  多个catch

    ex4 :1个catch

    ex5: return不影响finally{ }代码块中代码的执行

    ex6 :    执行 System.exit(0)   ==》 便不会再执行finally{ }代码块中代码


    ————————————————
    版权声明:本文为CSDN博主「郑清」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_38225558/article/details/82054100

  • 相关阅读:
    基于微服务架构的RBAC权限管理系统
    用C#实现基于(OpenId Connect)的单点登录与RBAC权限验证(SSO,OIDC,RBAC)
    量化分析基础
    Ocelot 发现服务总是失败的解决办法
    windows 下安装 theano 及配置 gpu
    python scrapy 爬虫 初学
    layer弹出层框架alert与msg详解
    Workerman-文件监控-牛刀小试
    ECharts 初体验
    实验楼 linux 学习
  • 原文地址:https://www.cnblogs.com/moegarn/p/11565822.html
Copyright © 2011-2022 走看看