工程开发之异常处理

一、JAVA异常体系

Throwable包含Error与Exception

而Exception下面又包含RuntimeException(uncheckedException,即不受检查异常)和checkedException受检查异常

二、异常处理

非必要不使用异常

使用描述性消息抛出异常

力所能及的异常一定要处理

异常忽略要有理有据

栗子:

使用Optional优雅地防止NPE

1)实例化Optional

Optional.ofNullable(obj)

2)使用orElse()方法解决NPE问题

orElse()的作用是设置默认值,当发生NPE时,返回指定的默认值

3)使用ifPresent()方法解决NPE问题

ifPresent(Consumer<? super T> consumer)就是在value值不为空时,做一些操作

4)对象非空判断性能高

当总循环次数<10000时,使用Optional与普通嵌套null非空检测查询稳定在30ms;

当总循环次数>10000&<10000000时,Optional比普通嵌套null非空检测查询性能高出10-20倍;

当总循环次数>10000000时,性能差距呈指数上升

三、日志规约与错误码规约

日志记录规约:

  1. 系统应依赖使用日志框架(SLF4J、JCL)的API而不是具体日志库中的
  2. 在日志输出时,字符串变量之间的拼接使用占位符的方式
  3. 日志打印时禁止直接用JSON工具将对象转换成String
  4. 尽量用英文来描述日志错误信息

日志输出规约:

  1. 日志级别开关判断(trace/debug/info级别输出,必须进行日志级别的开关判断)
  2. 异常日志信息要完整(案发现场信息/异常堆栈信息)
  3. 避免重复打印日志(配置文件中设置additivity=false)

扩展日志的设计与规约:

  1. 扩展日志单独存储(如打点、临时监控、访问日志等)
  2. 错误日志单独存储(业务日志与错误日志分开存储)

错误码规约:

  1. 定义时要有字母也要有数字
  2. 要分级分类管理
  3. 不能直接输出给用户作为提示信息使用
  4. 不要与业务架构或者组织架构挂钩
  5. 使用者避免随意定义新的错误码
  6. 便于不同语言的开发者之间的协作

Ps:常见错误码A0001 A0100 A0200 A0300 A0400 B0001 B0100……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值