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块里的任何代码了。

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



      

    技进乎艺,艺进乎道
  • 相关阅读:
    sql server中的孤立用户
    BWOA开源项目引子
    海边拾贝
    ABAP syntax_error 错误: form send_cmplx_data_015 does not exist.
    一点总结,手机应用开发前景
    这个周末发生了很多事
    品味单反
    远图(FarMap)使用
    And和手机随想
    远图(FarMap)花絮
  • 原文地址:https://www.cnblogs.com/weekend/p/6942245.html
Copyright © 2011-2022 走看看