1. 强制】每个小模块的异常,都应该定义一个专门的exception类,方便后续给用户生成错误码,不允许抛出任何RuntimeException和直接抛Exception。

    2. 尽量不要对大段代码进行try-catch,这是不负责任的表现。catch时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的catch尽可能进行区分异常类型,再做对应的异常处理。

    3. 强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。注意:什么情况下,都不要用e.printStackTrace()!最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。

    4. finally块必须对资源对象、流对象进行关闭,有异常也要做try-catch。

    5. 强制】预防NullPointerException。方法的返回值可以为null,不强制返回空集合,或者空对象等,但是必须添加注释充分说明什么情况下会返回null值。rpc、springcloud feign调用,一律要求进行非空判断。