- 可以使用logger.error(“error”,e)打印出异常的堆栈信息,便于排查相关代码问题,而不要用logger.error(“error”+e),这样只能打印出异常信息。
原因是如果只传一个参数e进去,那么e就被认为是String类型(会自动调toString()方法把Exception转成String),而不是Exception类型。
如果想打印堆栈信息,那么必须传两个或以上参数,实际上就是为了调用public void error(String msg, Throwable t); - 有可能异常的方法都要用try-catch包住,并抛出自定义的异常,尽量避免抛出未定义的系统异常。
- 自定义的异常要尽量详尽的表达出报错的信息,使人能够看到异常即知道错误原因。
- A调用B,B调用C,则尽量在C中try-catch各个具体的代码,这样才能报出小而具体的异常,而不是在C中用一个try-catch包住所有代码,那样无法报出具体问题异常;同时要在A中try-catch所有代码,用于兜底,避免C中没有catch的代码遗漏而报出的系统异常。
- 要区分出何处异常要停止程序,何处异常要catch住跳过,继续执行代码。
- 打印异常的logger,要用logger.error以避免线上将日志级别调到ERROR级别后无法打出INFO级别的异常logger信息。
关于异常规范总结
最新推荐文章于 2023-12-11 12:03:25 发布