使用异常

  • 编程错误一律使用异常,促使代码规范(虚函数接口中抛出异常,防止子类调用)
  • 涉及程序逻辑的处理一律不准使用异常(例如购物中的库存不足情况)
  • 特殊约定,需要异常处理的一律保持异常处理(数据库事务异常回滚)
  • 能预测、必现的异常一律改用手动逻辑判断处理(空指针调用,除数为零)
  • 不能预测、资源异常情况,一律用异常处理(服务断开,资源不足)
  • 参数校验尽量手动处理(能预测)

捕获异常

  • 异常最终目的是让设计者进行某种程度的复原,所以只捕获能够处理的异常(参数类型可预测,应该返回提示让用户处理)
  • 尽量捕获更细节的异常
  • 不用留空异常处理,至少打印日志

参考

https://ruby-china.org/topics/29104