java异常捕获后如何打印详细信息
前言
dubbo接口数据进行转换的过程中,出现了空指针,但是自己捕获的时候没有注意这个问题,只是简单的打印出来,结果发现答应出来的都是null,基本上是无效的异常打印。
完善异常信息
一开始的代码是如下所示:
try {
main(event, controlDTO);
} catch (Exception e) {
logger.error("错误信息:" + e.getMessage());
}
输出的结果如下所示:
错误信息:null
打印的信息太少了,于是我单纯的以为改成如下就可以了:
logger.error("错误信息:" + e);
但是发现数据依旧很少,甚至一点也不详细。于是我很奇怪,整个e都打印出来了,为啥重要信息还没打印出来。上网查了一下,应该改成下面这种方式:
e.printStackTrace();
打印的信息就丰富了很多。除了标准异常外,打印
at C.class
at B.class
at A.class
…再向外层抛异常。
了解一下原因
e.getMessage() ; 只会获得异常的名称。
toString打印错误输出内容样式。
printStackTrace打印错误输出内容样式:
一个例子献上,大家可以看下这个问题:
public class Test { private static Logger logger = LoggerFactory.getLogger(Test .class); public static void main(String[] args) { try { int a=1; Integer b =null; if (a==b) { // 抛异常 } }catch (Exception e){ //仅仅打印再console控制台 e.printStackTrace(); System.out.println("e.getMessage="+e.getMessage()); System.out.println("e="+e); //打印在后端的server 日志文件中 logger.error("Exception 1:{}",e)//仅仅这个才能打印完成的异常信息。记住是logger.error,如果用logger.info()是不能打印异常详细信息的 logger.error("Exception 2:{}",e.getMessage()) logger.error("Exception 2:{}",e.toString()) } }
}
分类:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)