• Java异常处理机制


    一、引言:本短文简单介绍了异常处理机制中需要注意的问题,比较浅显,意在查漏补缺。

    二、Java异常处理机制的五个关键字:try, catch, finally, throw, throws

      try : 代码监控,监控可能产生异常的代码块。

      catch:捕获异常。抛出的异常必须在某处得到处理,catch紧跟在try后,表示异常处理程序

      finally:清理工作,主要用来内存回收,关闭资源等。

      throw:抛出异常

      throws:表示异常发生的可能性,放在方法函数头。

    三、try{}catch{}finally{}执行顺序

    public class ExceptionSilencer {
        static int i = 0;//用来记录程序的执行顺序
        public static void main(String[] args){
            try {
                System.out.println("try block , i = " + (++i));
                throw new RuntimeException();
            }finally {
                System.out.println("finally block, i = " + (++i));
    //            return;
            }
        }
    }

    1. 多个catch块时,只匹配其中一个异常类并执行catch块代码,而不会执行后面的catch块,因此在防止多个catch块时需要;考虑顺序,一般将Exception基类异常放到最后面。

    2. finally代码块无论try-catch是否顺利执行完毕,都会执行。那么什么情况下finally代码块会不执行呢?在finally代码块中发生异常;在前面代码中使用了System.exit退出程序;程序所在线程死亡;关闭CPU

    3. 当程序执行try块、catch块时遇到return语句或throw语句,这两个语句都会导致该方法立即结束,所以系统并不会立即执行这两个语句,而是去寻找该异常处理流程中的finally块,如果没有finally块,程序立即执行return语句或throw语句,方法终止。如果有finally块,系统会立即开始执行finally块,只有当finally块执行完成后,系统才会再次跳回来执行try块、catch块里的return或throw语句;如果finally块里也使用了return或throw等导致方法终止的语句,则finally块已经终止了方法,不用再跳回去执行try块、catch块里的任何代码了。

    验证上述结论可通过上面给出的代码验证。



      

    技进乎艺,艺进乎道
  • 相关阅读:
    no space left on device
    功能测试用例
    数据库命令
    移动APP测试用例设计实践经验(转载)
    15个常用sql命令
    将Windows文件夹挂载到Linux上
    英语学习方法
    三种特质 做领导
    扬州之行 第一天
    list、dict、str虽然是Iterable,却不是Iterator
  • 原文地址:https://www.cnblogs.com/weekend/p/6942245.html
Copyright © 2020-2023  润新知