没有合适的资源?快使用搜索试试~ 我知道了~
[] - 2023-04-15 干掉满屏的 try-catch,这样写太香了!.pdf
需积分: 0 0 下载量 27 浏览量
2023-12-11
21:40:00
上传
评论
收藏 5.54MB PDF 举报
温馨提示
试读
40页
互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能
资源推荐
资源详情
资源评论
干掉满屏的 try-catch,这样写太香了!
2023-04-15原文
点击关注公众号,Java干货及时送达👇
来 源 : c n b l o g s . c o m / j u r e n d a g e / p / 1 1 2 5 5 1 9 7 . h t m l
什么是统一异常处理
目标
统一异常处理实战
总结
背 景
软 件 开 发 过 程 中 , 不 可 避 免 的 是 需 要 处 理 各 种 异 常 , 就 我 自 己
来 说 , 至 少 有 一 半 以 上 的 时 间 都 是 在 处 理 各 种 异 常 情 况 , 所 以
代 码 中 就 会 出 现 大 量 的 t r y { . . . } c a t c h { . . . } f i n a l l y
{ . . . }
代 码 块 , 不 仅 有 大 量 的 冗 余 代 码 , 而 且 还 影 响 代 码 的 可 读 性 。
比 较 下 面 两 张 图 , 看 看 您 现 在 编 写 的 代 码 属 于 哪 一 种 风 格 ? 然
后 哪 种 编 码 风 格 您 更 喜 欢 ?
丑 陋 的 t r y c a t c h 代 码 块
优 雅 的 C o n t r o l l e r
上 面 的 示 例 , 还 只 是 在 C o n t r o l l e r 层 , 如 果 是 在 S e r v i c e 层
, 可 能 会 有 更 多 的 t r y
c a t c h 代 码 块 。 这 将 会 严 重 影 响 代 码 的 可 读 性 、 “ 美 观 性 ” 。
所 以 如 果 是 我 的 话 , 我 肯 定 偏 向 于 第 二 种 , 我 可 以 把 更 多 的 精
力 放 在 业 务 代 码 的 开 发 , 同 时 代 码 也 会 变 得 更 加 简 洁 。
既 然 业 务 代 码 不 显 式 地 对 异 常 进 行 捕 获 、 处 理 , 而 异 常 肯 定 还
是 处 理 的 , 不 然 系 统 岂 不 是 动 不 动 就 崩 溃 了 , 所 以 必 须 得 有 其
他 地 方 捕 获 并 处 理 这 些 异 常 。
那 么 问 题 来 了 , 如 何 优 雅 的 处 理 各 种 异 常 ?
什么是统一异常处理
S p r i n g 在 3 . 2 版 本 增 加 了 一 个 注 解 @ C o n t r o l l e r A d v i c e , 可
以 与 @ E x c e p t i o n H a n d l e r 、 @ I n i t B i n d e r 、 @ M o d e l A t t r i b
u t e
等 注 解 注 解 配 套 使 用 , 对 于 这 几 个 注 解 的 作 用 , 这 里 不 做 过 多
赘 述 , 若 有 不 了 解 的 , 可 以 参 考 S p r i n g 3 . 2 新 注 解 @ C o n t r o l l
e r A d v i c e , 先 大 概 有 个 了 解 。
不 过 跟 异 常 处 理 相 关 的 只 有 注 解 @ E x c e p t i o n H a n d l e r , 从 字
面 上 看 , 就 是 异 常 处 理 器
的 意 思 , 其 实 际 作 用 也 是 : 若 在 某 个 C o n t r o l l e r 类 定 义 一 个
异 常 处 理 方 法 , 并 在 方 法 上 添 加 该 注 解 , 那 么 当 出 现 指 定 的 异
常 时 , 会 执 行 该 处 理 异 常 的 方 法 , 其 可 以 使 用 s p r i n g m v c 提 供
的 数 据 绑 定 , 比 如 注 入 H t t p S e r v l e t R e q u e s t 等 , 还 可 以 接 受
一 个 当 前 抛 出 的 T h r o w a b l e 对 象 。
但 是 , 这 样 一 来 , 就 必 须 在 每 一 个 C o n t r o l l e r 类 都 定 义 一 套
这 样 的 异 常 处 理 方 法 , 因 为 异 常 可 以 是 各 种 各 样 。 这 样 一 来 ,
就 会 造 成 大 量 的 冗 余 代 码 , 而 且 若 需 要 新 增 一 种 异 常 的 处 理 逻
辑 , 就 必 须 修 改 所 有 C o n t r o l l e r 类 了 , 很 不 优 雅 。
当 然 你 可 能 会 说 , 那 就 定 义 个 类 似 B a s e C o n t r o l l e r 的 基 类 ,
这 样 总 行 了 吧 。
这 种 做 法 虽 然 没 错 , 但 仍 不 尽 善 尽 美 , 因 为 这 样 的 代 码 有 一 定
的 侵 入 性 和 耦 合 性 。 简 简 单 单 的 C o n t r o l l e r , 我 为 啥 非 得 继
承 这 样 一 个 类 呢 , 万 一 已 经 继 承 其 他 基 类 了 呢 。 大 家 都 知 道 J a
v a 只 能 继 承 一 个 类 。
那 有 没 有 一 种 方 案 , 既 不 需 要 跟 C o n t r o l l e r 耦 合 , 也 可 以 将
定 义 的 异 常 处 理 器
应 用 到 所 有 控 制 器 呢 ? 所 以 注 解 @ C o n t r o l l e r A d v i c e 出 现 了
, 简 单 的 说 , 该 注 解 可 以 把 异 常 处 理 器 应 用 到 所 有 控 制 器 , 而
不 是 单 个 控 制 器 。 借 助 该 注 解 , 我 们 可 以 实 现 : 在 独 立 的 某 个
地 方 , 比 如 单 独 一 个 类 , 定 义 一 套 对 各 种 异 常 的 处 理 机 制 , 然
后 在 类 的 签 名 加 上 注 解 @ C o n t r o l l e r A d v i c e , 统 一 对
不 同 阶 段 的 、 不 同 异 常
进 行 处 理 。 这 就 是 统 一 异 常 处 理 的 原 理 。
注 意 到 上 面 对 异 常 按 阶 段 进 行 分 类 , 大 体 可 以 分 成 : 进 入 C o n t
r o l l e r 前 的 异 常 和 S e r v i c e 层 异 常 , 具 体 可 以 参 考 下 图 :
图片
不 同 阶 段 的 异 常
目标
消 灭 9 5 % 以 上 的 t r y c a t c h 代 码 块 , 以 优 雅 的
A s s e r t ( 断 言 )
方 式 来 校 验 业 务 的 异 常 情 况 , 只 关 注 业 务 逻 辑 , 而 不 用 花 费 大
量 精 力 写 冗 余 的 t r y c a t c h 代 码 块 。
统一异常处理实战
在 定 义 统 一 异 常 处 理 类 之 前 , 先 来 介 绍 一 下 如 何 优 雅 的 判 定 异
常 情 况 并 抛 异 常 。
用 Assert(断言) 替换 throw exception
想 必 A s s e r t ( 断 言 ) 大 家 都 很 熟 悉 , 比 如 S p r i n g 家 族 的
o r g . s p r i n g f r a m e w o r k . u t i l . A s s e r t , 在 我 们 写 测 试 用 例
剩余39页未读,继续阅读
资源评论
毕业小助手
- 粉丝: 1991
- 资源: 1712
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Picasso_v3.1 2.ipa
- chromedriver-mac-arm64.zip
- 蓝zapro.apk
- chromedriver-linux64.zip
- UCAS研一深度学习实验-MNIST手写数字识别python源码+详细注释(高分项目)
- 基于Python和PyTorch框架完成的一个手写数字识别实验源码(带MINIST手写数字数据集)+详细注释(高分项目)
- 基于Matlab在MNIST数据集上利用CNN完成手写体数字识别任务,并实现单层CNN反向传播算法+源代码+文档说明(高分项目)
- NVIDIA驱动、CUDA和Pytorch及其依赖
- 基于SVM多特征融合的微表情识别python源码+项目说明+详细注释(高分课程设计)
- html动态爱心代码一(附源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功