Java异常机制

错误处理机制是几乎每个现代程序语言都具备的能力。
错误是指程序运行中出现的各种影响程序不可正常运行下去的状况,如内存不够用,类找不到,文件找不到、网络连接失败、数据类型转换失败等。


接口Throwable表明了Java中代码,所有错误都是可抛出的,即当错误发生时,错误可以自己处理也可以被抛到上层即调用层来处理,类似事件传播机制。

错误又具体分为两类,Error和Exception,它们的区别是:
Error是指程序无法处理的错误,表示运行应用程序中较严重问题,如OutOfMemoryError,NoClassDefFoundError
Exception是指程序可以处理的错误,它又分为不必查异常和必查异常。


所有RuntimeException及其子类,都为不必查异常,如NullPointerException,ArrayIndexOutOfBoundException。之所以被称为“不必查”,是因为编译器并不会强制要求你必须使用try catch语句捕获它,也不会要求你必须抛出它。为什么定义他们“不必查”是因为它们可能出现的场景太频繁了,因此希望程序员自己添加逻辑避免它的发生(难道这样就不麻烦?)。虽说名为“不必查”,可现实却是,一旦你没有检查到它,在它发生后,你却又没有捕获它,它会自动向上抛出,直到抛出到最上层,中断当前线程。没有一个程序,特别是用于响应用户请求的单线程程序,会希望仅仅其中一个用户响应处理过程中出现了异常,就草草终止了整个程序。所以大家都会在程序的最外层,添加try catch,以保护主程序永远活着,除非手动关了它。

Exception及其他子类,为必查异常,如IOException、SQLException等。编译器要求你必须处理它,或抛到上层处理它。必查异常是假定你捕获到这类异常后后,可以做些什么,恢复现场,并让程序继续向下运行。可现实却是,某些必查异常出现后,你并不能干些什么,只是打个log或告诉用户,操作失败。这时最好的做法是,抛出自定义的RuntimeException,在最外层try catch,统一处理。由于RuntimeException是不需要手动抛出的,因此代码会更简洁。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值