Java处理异常远比你想象的复杂吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3274个文字,预计阅读时间需要14分钟。
本节摘要总结于《Java业务开发常见错误+100%案例》——应用程序应避免不必要的异常,捕捉与处理异常是一个细致活。如同在业务开发时未考虑异常处理,而在结尾时才采用流式处理,实为不妥。
应用程序避免不了出异常,捕获与处理异常是一个精细活。像是业务开发时不考虑如何处理异常,而在结尾时采用“流水线”的方式进行异常处理,也就是统一的为所有方法打上 try..catch..捕获所有异常记录日志,有些技巧的同学可能会使用 AOP 来进行类似的“统一异常处理”。本文摘录总结于极客时间——《Java业务开发常见错误 100 例》
其实,这样是不可取的,今天我们就来聊一聊异常处理相关的坑。
捕获和处理异常容易犯的错- 不在业务代码层面考虑处理异常,仅在框架层面粗犷捕获和处理异常
为了理解错在何处,我们先来看看大多数业务应用都采用的三层架构:
- Controller 层负责信息收集、参数校验、转换服务层处理的数据适配前端,轻业务逻辑
- Service 层负责核心业务逻辑,包括外部服务调用、访问数据库、缓存处理、消息处理等
- Repository 层负责数据访问逻辑,一般没有业务逻辑
每层架构的工作性质不同,且从业务性质上来说异常可以分为业务异常和系统异常两大类,这就决定了很难进行统一的异常处理。
- Repository 层出现的异常或许可以忽略,或许可以降级,或许需要转换为一个友好的异常。如果一律捕获异常仅仅记录,可能业务逻辑已经出错,而用户和程序本身完全感知不到。
本文共计3274个文字,预计阅读时间需要14分钟。
本节摘要总结于《Java业务开发常见错误+100%案例》——应用程序应避免不必要的异常,捕捉与处理异常是一个细致活。如同在业务开发时未考虑异常处理,而在结尾时才采用流式处理,实为不妥。
应用程序避免不了出异常,捕获与处理异常是一个精细活。像是业务开发时不考虑如何处理异常,而在结尾时采用“流水线”的方式进行异常处理,也就是统一的为所有方法打上 try..catch..捕获所有异常记录日志,有些技巧的同学可能会使用 AOP 来进行类似的“统一异常处理”。本文摘录总结于极客时间——《Java业务开发常见错误 100 例》
其实,这样是不可取的,今天我们就来聊一聊异常处理相关的坑。
捕获和处理异常容易犯的错- 不在业务代码层面考虑处理异常,仅在框架层面粗犷捕获和处理异常
为了理解错在何处,我们先来看看大多数业务应用都采用的三层架构:
- Controller 层负责信息收集、参数校验、转换服务层处理的数据适配前端,轻业务逻辑
- Service 层负责核心业务逻辑,包括外部服务调用、访问数据库、缓存处理、消息处理等
- Repository 层负责数据访问逻辑,一般没有业务逻辑
每层架构的工作性质不同,且从业务性质上来说异常可以分为业务异常和系统异常两大类,这就决定了很难进行统一的异常处理。
- Repository 层出现的异常或许可以忽略,或许可以降级,或许需要转换为一个友好的异常。如果一律捕获异常仅仅记录,可能业务逻辑已经出错,而用户和程序本身完全感知不到。

