Java中的异常类型学习

Java中的异常类型学习

直接在IDEA看源码继承关系

感想:遇到不懂的基础知识直接去看源码、类继承关系。看完对你理解这个问题很有帮助,注意,是理解不是死记。

在这里插入图片描述

  • Error(错误)和 Exception(异常)都是 java.lang.Throwable 类的子类
  • Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类,
  • Exception 是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,进行相应的处理。
  • Error 是指正常情况下不大可能出现的情况,绝大部分的 Error 都会导致程序处于非正常、不可恢复状态。所以不大需要被开发者捕获。

好,继续往下看源码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 可以看出
  • Exception异常又分为两类
  • check异常:直接派生自Exception的异常类,必须被捕获或再次声明抛出(如:IOException、ClassNotFoundException等等…)
  • runtime异常:派生自RuntimeException的异常类。使用throw语句可以随时抛出这种异常对象:(如:IndexOutOfBoundsException、ArithmeticException等等…)

异常的继承关系

通过上面的方法,查看源码,同时学到异常类之前的父子类继承关系
如:IOException继承于Exception
ArrayIndexOutOfBoundsException父类为IndexOutOfBoundsException
IndexOutOfBoundsException父类为RuntimeException
等等这些都可以通过源码来学习到

一道面试题

说出下面代码的运行结果,执行顺序。(此题的出处是《Java编程思想》)

把这道题目看明白就差不多了

class Annoyance extends Exception {}
class Sneeze extends Annoyance {}

public class Human {
    public static void main(String[] args) throws Exception {
        try {
            try {
                throw new Sneeze();
            }
            catch ( Annoyance a ) {
                System.out.println("Caught Annoyance");
                throw a;
            }
        }
        catch ( Sneeze s ) {
            System.out.println("Caught Sneeze");
            return ;
        }
        finally {
            System.out.println("Hello World!");
        }
    }
}

运行结果为:

Caught Annoyance
Caught Sneeze
Hello World!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值