异常处理练习题

练习一

在这里插入图片描述

public class ExceptionTest {
    public static void main(String[] args) {
        try {
            int i = 2  / 0;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("finailly");
        }
        System.out.println("end-------------");
    }
}

体会

  • 如果不进行异常处理或者没有捕获到异常,那么程序会直接崩溃,不会执行下面的
  • finally : 不管有没有捕获到异常,等会执行这里面的,跟程序崩溃与否没有关系,就算程序要崩溃,也会在崩溃之前执行完这里的逻辑
  • 程序崩溃与否与异常是否被处理有关
  • finally与程序是否崩溃没有关系

练习二(疑问:finally的调用时机)

package com.oceanstar;

public class ReturnExceptionDemo {
    static void methodA() {
        try {
            System.out.println("进入方法A");
            throw new RuntimeException("制造异常");
        }finally {
            System.out.println("用A方法的finally");
        }

        //System.out.println("aaaa");  // 到达不了
    }

    static void methodB() {
        try {
            System.out.println("进入方法B");
            return;  // 无效
        } finally {
            System.out.println("调用B方法的finally");
        }

      //  System.out.println("aaaa");  // 到达不了
    }

    static void methodC() {
        try {
            System.out.println("进入方法C");
            return;  // 无效
        } finally {
            System.out.println("调用C方法的finally");
            return;
        }

        //  System.out.println("aaaa");  // 到达不了
    }
    /*
    * finally调用时机:
    *   在throw之前调用
    *   就算是return也没用,反正一定会调用的
    *
    * */

    public static void main(String[] args) {
        try {
            methodA();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        methodB();
        methodC();
    }
}

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值