java中的try-catch-finally异常捕获

package com.imooc.exception;
/**
 * @author ausu: try-catch-finally异常捕获
 *
 */
public class Trycatchtest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Trycatchtest trycatchtest = new Trycatchtest();
        trycatchtest.test();
    }
    /**
     * while循环的异常捕获
     */
    public void test(){
        int divider = 10;
        int result = 100;
        try {
            /**
             * try中包含了需要捕获异常的代码块,如果,成功捕获异常,则执行相应的catch块;否则,略过catch块。
             */
            while (divider > -1) {
               divider--;
               result = result +100/divider;
            }
            //关于以下语句的执行问题:
            //   如果,在此语句前成功捕获到异常,则将跳过以下语句并执行相应的catch块中的异常处理代码。
            System.out.println("未捕获异常则输出我。");
            
        }catch(ArithmeticException e){
            /**TODO: 多个catch的存在,必须遵行先catch子类,在父类
             * 如:catch(ArithmeticException e)之后再catch(Exception e).
             *因为,ArithmeticException 是 Exception的子类。
             **/
            //TODO:处理该算术异常(ArithmeticException)的代码块。
            //调用此方法,打印异常的具体信息
            System.out.println("捕获到了循环中的算术异常,如下:");
            e.printStackTrace();
        }
        catch (Exception e) {
            // TODO: handle exception
            System.out.println("捕获到了循环中的异常,如下:");
            e.printStackTrace();
        }finally{
            /**
             * 执行最后的finally块中语句。
             */
            System.out.println("不管有没有捕获异常,最后都执行我。");
        }
        //至此,整个try-catch异常捕获结束,不管有没有捕获异常,都会执行下面语句。
        System.out.println(result);
    }
}
/**
 * 总结:
 *    关于try-catch-finally的异常捕获,我们使用try块来包含可能出现“异常的代码块”。
 *    1.如果,此代码块没有异常,则执行try块中的代码、finally块中的代码及异常捕获过程之后的代码。如:System.out.println(result);
 *    2.如果,此代码有异常,则在try块中捕获到异常,并在异常处跳转至相应的catch块中并执行其中的“异常处理代码”;
 *      再执行finally块中的代码及异常捕获过程之后的代码。如:System.out.println(result);
 *      
 *    总之,在try中捕获异常后>>catch异常处理>>finally》正常代码。
 *        在try中未捕获异常>>finally>>正常代码。
 *        
 *    即,提供:为可能出现异常的代码,增加一个捕获并能作出异常处理的功能。
 */

注:此博文为日常的学习总结,如有不当之处,请见谅!
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页