zoukankan      html  css  js  c++  java
  • 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块里的任何代码了。

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



      

    技进乎艺,艺进乎道
  • 相关阅读:
    _bzoj1061 [Noi2008]志愿者招募【最小费用最大流】
    _bzoj2243 [SDOI2011]染色【树链剖分】
    _bzoj1013 [JSOI2008]球形空间产生器sphere【高斯消元】
    _bzoj1002 [FJOI2007]轮状病毒【瞎搞】
    leetcode 273 Integer to English Words
    leetcode 12 Integer to Roman
    leetcode 1071 Greatest Common Divisor of Strings
    lc6 ZigZag Conversion
    lc13 Roman to Integer
    leetcode 171 Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/weekend/p/6942245.html
Copyright © 2011-2022 走看看