java的异常(try catch throws throw)

本文通过一个测试类展示了Java异常处理的三种方式:try-catch、throws和声明异常。测试了异常出现时代码的执行流程及调用者如何处理异常。在catch和finally块中都存在return的情况下,异常发生时会执行finally块的return。
摘要由CSDN通过智能技术生成

java的异常

  1. 写一个测试类

import lombok.extern.slf4j.Slf4j;

/**
 *   测试 try catch   throw  throws
 */
@Slf4j
public class ExceptionTest {

    public static void main(String[] args) {
        ExceptionTest exceptionTest = new ExceptionTest();
//        exceptionTest.testTryCatch();

//        try {
//            exceptionTest.testThrows();
//        } catch (Exception e) {
//            log.info("测试抛出异常这个方法,出现了异常");
//            e.printStackTrace();
//        }

        try {
            exceptionTest.testThrow();
        } catch (Exception e) {
            log.info("测试声明异常这个方法,出现了异常");
            e.printStackTrace();
        }

        String s = exceptionTest.test01();
        System.out.println("s:" + s);

        String str = exceptionTest.test02();
        System.out.println("str:" + str);
    }


    /**
     * 测试try catch
     * 特点: 1. 出现异常,代码会继续执行
     *       2. 调用此方法,不需要处理异常
     */
    public void  testTryCatch(){
        log.info("开始测试try catch");
        try{
            int number = 1/0;
        }catch (ArithmeticException e){
            log.info("进入了catch 中,异常信息为:" + e.getMessage());
        }
        log.info("出现了异常,是否还执行此方法");
    }

    /**
     * 测试抛出异常
     *  特点: 1. 出现异常,代码中止执行
     *        2.  调用此方法,需要处理异常
     */
    public void testThrows() throws Exception{
        log.info("开始测试 抛出异常");
        int number = 1/0;
        log.info("出现了异常,是否还执行此方法");
    }

    /**
     *  测试声明异常
     *  特点: 1. throw 后不允许有代码
     *        2.  调用此方法,需要处理异常
     */
    public void testThrow() throws Exception{
        log.info("开始测试 声明异常");
        int number = 1/0;
        throw new Exception();
//        log.info("出现了异常,是否还执行此方法");
    }


    /**
     *  catch 的 return 无法返回了
     *  当 catch 和 finally 中,都有 return 时, 当出现异常时,执行的是 finally 中的return
     * @return
     */
    public String test01(){
        try{
            int number = 1/0;
        }catch (Exception e){
            System.out.println("进入了catch");
            e.printStackTrace();
            return "false";
        }finally {
            System.out.println("进入了finally");
            return "success";
        }
    }


    public String test02(){
        String str = "";
        try{
            int number = 1/0;
        }catch (Exception e){
            System.out.println("进入了catch");
            e.printStackTrace();
            str = "false";
        }finally {
            System.out.println("进入了finally");
            str = "success";
        }
        return str;
    }

}

总结: 从代码是否继续执行和调用方法的处理方式两点进行测试

  1. 当 catch 和 finally 中,都有 return 时, 当出现异常时,执行的是 finally 中的return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值