关于try-catch的使用总结

在一个业务功能里try-catch使用很频繁,没有使用try-catch的情况是很少的,如果一段代码从底层到api都没有使用try-catch我感觉这代码可能有问题,为什么呢,因为即使业务代码没有问题,仍然会有一些系统层级的bug出现会阻塞导致bug出现,而try-catch就是java里面具备的最后一道关卡,所以try-catch是非常重要的。

同时跟try-catch相关的exception也是非常重要,自定义exception可以迅速定位问题在哪里,并且可以配合try-catch进行正确的业务异常处理,举个例子在service层使用

try {
    ...
} catch (BizException e){
    throw e;
}

class BizException extends Exception{
    String code;
    String msg;
}

在controller层使用

try {
    ...
} catch (BizException e){
    return BizResult.builder().code(e.getCode).msg(e.getMsg).build();
} catch (Exception e){
    return BizResult.builder().code("00009999").msg("业务繁忙,请稍后重试").build();
}

这样就可以使用exception帮助实现业务异常的判断并进行正常的业务异常的反馈。

有时候在开发过程中也会出现因非代码问题造成的bug,比如配置被误修改或者,或者调用的服务被中断等不可预知的问题,这时候也可以使用try-catch来进行处理,否则仍然会出现生产异常

try {
    int count = bizMapper.updateByPrimaryKey(bizObj);
    if(count != 1){
        throw DbException.builder.code("10110011").msg("数据库操作异常").build();
    }
} catch (Exception e) {
    LOGGER.error("数据库操作异常",e);
    throw DbException.builder().code("10110011").msg("数据库操作异常").build();
}

对于数据库操作也要进行判断操作结果是否满足要求,如果不满足预期的结果也可以通过自定义异常来进行判断处理,数据库操作也不能保证百分之百不会出问题,比如配置错误,网络中断等都可能造成数据库操作,甚至其他一些少见的异常,所以底层也是有必要使用try-catch的。

综上,在一个业务功能开发,一般需要两个以上的try-catch,并在controller层将Exception进行处理,从而使前端可以返回正常的业务提示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值