java异常(二) 异常框架

  • java异常架构图

  • Throwable

Throwable是java语言中所有错误或异常的超类

Throwable包含两个子类 : Error 和 Exception 他们通常用于指示发生了异常情况

Throwable包含了其线程创建时线程执行堆栈的快照, 它提供了printStackTrace()等接口用于获取堆栈跟踪数据等信息

  • RuntimeException

RuntimeException是那些可能再java虚拟机正常运行期间抛出异常的超类

编译器不会检查RuntimeException异常. 例如, 除数为0时, 抛出ArithmeticException异常. RuntimeException是ArithmeticException的超类. 当发生代码除数为0的情况时, 倘若既没有通过throws声明抛出ArithmeticExceptio异常, 也没有通过try..catch..处理该异常, 也能通过编译. 这就是我们所说的"编译器不会检查RuntimeException异常".

所以应尽量避免代码出现该情况发生.

  • Error

Error是Throwable的子类, 用于指示合理的应用程序不应该试图捕获的严重问题, 大多数这样的错误都是异常条件.

和RuntimeException一样, 编译器也不会检查Error

* Exception下又分为两个分支, RuntimeException和IOException

* 由于程序错误导致的异常属于RuntimeException;

* 而程序本身没问题, 但是由于像I/O错误这类问题导致的异常属于IOException

  • 重点来说说RuntimeException

先来看一段代码

public class Demo{
    public static void main(String[] args){
        String str = "100";
        int sum = Integer.parseInt(str);
        System.out.println(num * 2);
    }
}

parseInt的源码定义是: public static int parseInt(String s) throws NumberFormatException

这个方法上已经明确抛出异常, 但是在进行调用时发现, 即使没有进行异常处理也可以正常执行, 这个就属于RuntimeException的范畴

很多代码都可能出现异常, 例如"10/0"都可能产生异常, 如果所有可能产生异常的地方都强制性异常处理, 代码就会太过复杂, 所以在异常设计的时候, 考虑到一些异常可能是简单问题, 所以将这类异常称作RuntimeException, 也就是使用RuntimeException定义的异常类可以不需要强制性进行异常处理

  • 常见问题 : 请解释Exception和RuntimeException的区别, 请举例几个常见的RuntimeException
  1. 使用Exception是RuntimeException的父类, 使用Exception定义的异常都要求必须使用异常处理, 而使用RuntimeException定义的异常可以由用户选择性的来进行异常处理
  2. 常见的RuntimeException : ClassCastException, NullPointerException等

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值