本文不科普checked exception和unchecked exception,如果不知道这两者区别的童鞋可以参考其他文章。
进入正题。
个人认为,当开发人员知道如何处理异常时应使用checked exception。但又一个问题来了:什么叫“知道”?什么叫“不知道”?
我认为
1. 使用checked exception的情况:异常在运行时出现是正常的,是我们期待的,出现后不会影响程序继续正常工作的,开发人员应该知道此类异常出现后程序的运行方向的。
最典型的例子就是业务异常。比如用户输入的数据之间有一定的关系,不满足这种关系时需要提示用户,虽然可以采用在biz层直接返回字符串信息的方式,但很多时候该方法需要返回的数据不是一个字符串,这个时候运用异常就很方便。下面是示例代码:
public class DemoService {
public Goods findGoods(Customer customer, Long goodsId) throws BizException {
if (validateCustomerAndGoods()) {// 此处有一个查找货物并验证客户和货物关系的业务逻辑
throw new CustomerAndGoodsMismatchException("此客户无权查看此货物");
}
return goods;
}
}
@RestController
public class DemoController {
@GetMapping("/findGoods")
public Result findGoods(Customer customer, Long goodsId) {
Result result = new Result();
try {
Goods goods = demoService.findGoods(customer, goodsId);