Java 学习笔记 异常

8 篇文章 0 订阅

异常(Exception):发生在程序执行期间,表明出现了一个非法的运行状况,会抛出一个异常对象。

JDK中与异常相关的类:
这里写图片描述

Throwable:所有错误处理的父类,两种子类,Error和Exception。
Error:由JVM所侦测到的无法预期的错误,JVM层次的错误,导致JVM无法运行。无法被捕捉。
Exception:可以捕捉到的异常,主要包括两类,runtime exception和checked exception。

checked exception:可以被修复,常见的有IO异常等,要求强制捕获或抛出。当前如果能够处理异常,应该使用try…catch…finally捕获,在对应的catch语句块中进行异常处理。如果不能处理,应该在可能产生异常的方法定义出抛出异常,由调用者处理。调用者也应该处于try…catch语句块中,或者调用者的方法也需要throw抛出递归这个过程,直到能够处理。

runtime exception:运行时异常,可以不用处理。系统会把该异常往上层抛出,知道遇到处理代码。如果没有被处理,到最上层处。如果是多线层由Thread.run()抛出,如果是单线程就被main()抛出,单线程退出,如果是主程序抛出,程序退出并进行错误信息打印提示。常见的如NullPointerException,ArrayIndexOutOfBoundsException等,这类异常通常是编写的程序有bug,即语义错误。


异常处理链

实际开发中,需要将“过于专业”的异常转换为一个“业务异常”。自定义一些业务逻辑异常,将JVM抛出的异常捕获,转化为中间层的业务逻辑异常,再转化为上层交互界面能够理解的报错信息。

异常尽量在到达界面层前被解决,能够被解决的异常不要向上抛出。

对于多种异常,要分别catch,具体处理,避免问题被掩盖。

参考:

《Java程序设计》/《面向对象编程基础》:第9讲《异常处理》
运行时异常(RuntimeException)与一般异常有何不同?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值