最新公告
  • 欢迎您光临开源论坛,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • Java异常处理机制try catch流程详解

    在项目中遇到try…catch…语句,因为对Java异常处理机制的流程不是很清楚,导致对相关逻辑代码不理解。所以现在来总结Java异常处理机制的处理流程:

    1.异常处理的机制如下:在方法中用 try… catch… 语句捕获并处理异常,catch 语句可以有多个,用来匹配多个不同类型的异常。对于处理不了的异常或者要转型的异常,在方法的声明处通过 throws 声明异常,通过throw语句拋出异常,即由上层的调用方法来处理该异常。

    try {
      逻辑程序块
    } catch(ExceptionType1 e) {
      处理代码块1
    } catch (ExceptionType2 e) {
      处理代码块2
      throw(e);  // 再抛出这个"异常"
    }

    2.Exception 是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,进行相应的处理。

    Exception 可以以两种方式出现:

    一是发生在程序编译时或运行时发生异常,是被程序抛出,用户没有主动抛出异常;二是用户主动抛出异常,使用throw关键字主动抛出异常。该异常可以是业务逻辑的异常。

    try {
      // 可能发生异常的语句
    } catch(ExceptionType e) {
      // 处理异常语句
    }

    3.执行流程

    try语句块中发生了异常

    如果try语句块中发生了异常,那么程序就会把对应的异常对象抛出,然后catch语句就会捕获该异常并且处理。

    注意:如在try语句块的第二句语句发生异常,那么在第二句以后的语句都不会执行了,转到catch语句块中开始执行。处理完catch语句块的内容,就会执行catch语句块之后的内容

    try语句块中没有发生异常

    如果try语句块中没有发生异常,那么try语句块中的内容会由上到下依次执行,然后catch语句块会全部被跳过,接下来执行catch语句块之后的内容。

    Java异常处理机制try catch流程详解

    举个栗子:

    public class ExceptionTest {
      public static void main(String[] args) {
     
        for (int i = 0; i < 3; i++) {
          String message = "";
          int a = 0;
          try{
            if (i == 1){
              throw new Exception("错误");
            }
            message = "正确";
            a= 123;
          }catch (Exception e){
            message = e.getMessage();
          }
          System.out.println( "i 等于" + i);
     
          System.out.println(message );
          System.out.println("a = " + a+ "\n");
        }
      }
    }

    输出结果分析:

    当有i = 2时,用户主动抛出异常,可以看到为 message= “正确”;a =123;的赋值语句没有执行, 进入到catch语句块中,然后再执行catch语句块以后的内容message = e.getMessage(); 这里message = “错误”,因为throw new Exception(“错误”); 在抛出异常时赋值了message为”错误”;

    message = “错误”
    a = 0

    输出结果

    i 等于0
    正确
    a = 123
    i 等于1
    正确
    a = 123
    i 等于2
    错误
    a = 0

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站

    开源论坛,我们只做源码的搬运工
    开源论坛 » Java异常处理机制try catch流程详解

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    开源论坛
    一个高级程序员模板开发平台

    发表评论

    • 248会员总数(位)
    • 407资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 240稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情