异常(异常体系、异常处理、自定义异常)

目录

1.异常

1.1 异常的体系

1.2 Throwable

2.异常处理

2.1 异常处理的两种方式

编译时异常和运行时异常的区别

try/catch

抛出

2.2 try... catch... finally格式

一个异常处理​

 两个异常处理

JDK的一个新的异常处理方案​

2.3 抛出(throws,throw)

throws

throw

2.4 标准异常处理​编辑

3.自定义异常

3.1 继承自Exception

3.2 继承自RuntimeException

4. !!!注意事项 !!!

4.1 final,finally和finalize的区别

4.2 return的执行时机

4.3 方法重写时,子类异常抛出的规定


1.异常

 

1.1 异常的体系

1.2 Throwable

 

2.异常处理

2.1 异常处理的两种方式

编译时异常和运行时异常的区别

 举例:

try/catch

 抛出

2.2 try... catch... finally格式

 ​​​​​

一个异常处理

 两个异常处理

 方式1

方式2:

 

方式3:

注意!

 

JDK的一个新的异常处理方案

2.3 抛出(throws,throw)

throws

throw

 

 

 

2.4 标准异常处理

注意 

 

3.自定义异常


3.1 继承自Exception

包含编译期和运行期异常

 异常提示:通过构造方法

3.2 继承自RuntimeException

运行期异常 ​​ 

异常提示:通过构造方法

4. !!!注意事项 !!!

4.1 final,finally和finalize的区别

 

4.2 return的执行时机

public class Try_Catch_Finally {
    public static void main(String[] args) {
        System.out.println("return的是" + method());
        //finally中的是40
        //return的是30

        System.out.println("return的是" + method2());
        //finally中的是40
        //return的是40

        System.out.println("return的是" + method3());
        //return的是0
    }

    public static int method() {
        int a = 10;
        try {
            System.out.println(a / 0);
            a = 20;
        } catch (ArithmeticException e) {
            a = 30;
            return a;
            /**
             *  !!!return a在程序执行到这一步的时候,这里不是return a而是return 30,这个返回路径就形成了!!!
             *  但是它发现后面还有finally,所以继续执行finally的内容,a=40
             *  再次回到以前的返回路径,继续走return 30;
             */
        } finally {
            a = 40;
            System.out.println("finally中的是" + a);
        }
        return a;
    }


    public static int method2() {
        int a = 10;
        try {
            System.out.println(a / 0);
            a = 20;
        } catch (ArithmeticException e) {
            a = 30;
            return a;
            /**
             *  return a在程序执行到这一步的时候,这里不是return a而是return 30,这个返回路径就形成了
             *  但是它发现后面还有finally,所以继续执行finally的内容,a=40
             *  !!!由于finally中有return,走return 40 !!!
             */
        } finally {
            a = 40;
            System.out.println("finally中的是" + a);
            return a;
        }
    }

    public static int method3() {
        int a = 10;
        try {
            return a;
            /**
             *  return a在程序执行到这一步的时候,这里不是return a而是return 10,这个返回路径就形成了
             *  但是它发现后面还有finally,所以继续执行finally的内容
             *  !!!由于finally中有return,走return 0 !!!
             */
        } finally {
            if (a == 10) {
                return 0;
            }
        }
    }
}

4.3 方法重写时,子类异常抛出的规定

第一条 

 第三条

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值