java异常处理实践总结

异常处理最佳实践

1.不要生吞异常,应输出日志或继续抛出来

    • 原因:无法查到异常日志,导致问题跟踪时候存在难以跟踪的诡异现象

2.如果不知要异常要怎样处理,就继续抛出留给上层来处理

    • 原因:有一些异常在底层不知道如何处理,业务逻辑清晰后会有人知道怎么来处理。
    • 案例:HTTP 请求可能会产生SocketTimeoutException,客户端不确定是否需要重试时可以抛出异常,留给业务来判断是否重试

3.不要捕获 Exception 这样的通用异常,应捕获特定异常

    • 原因:会捕获掉 RuntimeError,响外部监控报警
    • 原因:损害代码可读性
    • 案例:监控平台会对OOM进行监控报警

4.不要将日志输出到标准错误流,应输出到日志系统

    • 原因:在实际生产环境,无法判断标准错误流到底输出到哪

5.异常中应避免敏感信息

6.异常应尽量早的抛出

    • 原因:没有在故障第一现场抛出可能会导致排查时搞不清楚异常真正源头

7.异常应避免多次记录

    • 原因:多处出现异常可能会导致排查时搞不清楚异常真正源头

8.不要滥用异常

    • 原因:trycatch 会在影响 JVM 对性能优化的预判
    • 原因:每次实例会 Exception 都会对栈进行快照,开支严重
    • 案例:应在 if 中检查 对象是否为空,而非捕获 NPE

9.业务异常:有明确业务语义的异常,应按照业务逻辑进行处理(例如:参数异常,业务逻辑异常)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值