Java 异常Exception e中e.getMessage()、e.toString()、e.printStackTrace()方法的区别
- 参考
-
e.toString()、e.getMessage()、e.printStackTrace()的区别
-
e.toString()返回 的异常类型和异常详细信息 java.lang.IllegalArgumentException: port out of range:90901
-
e.getMessage() 返回 异常详细消息。port out of range:90901
- e.printStackTrace() 会把完整的异常信息打印到控制台
-
- 如何打印完整的异常信息(堆栈信息),如需要把异常通过邮件的形式发送出去
-
/** * 获取堆栈信息 * @param throwable * @return */ public static String getStackTrace(Throwable throwable){ StringWriter sw = new StringWriter(); try (PrintWriter pw = new PrintWriter(sw)) { throwable.printStackTrace(pw); return sw.toString(); } }
-
-
为什么说 e.printStackTrace() 回导致死锁
-
大量的访问导致大量的异常输出,最终导致内存满了,相互等待,应用挂了
-
转:e.getMessage()、e.toString() 、e.printStackTrace()
e.getMessage()
只获取异常信息的字符串(不含异常类型)
e.toString()
获取异常类型和异常详细信息
e.printStackTrace()
打印出异常类型和异常详细信息,并且显示异常在后台代码中出现的位置。
public class ExceptionTest {
public static void main(String[] args) {
try {
System.out.println(1/0);
} catch (Exception e) {
System.out.println("e.getMessage():"+e.getMessage());
System.out.println("————————————————————");
System.out.println("e.toString():"+e.toString());
System.out.println("————————————————————");
e.printStackTrace();
}
}
}
空值台打印结果:
除以零
————————————————————
java.lang.ArithmeticException: 除以零
————————————————————
java.lang.ArithmeticException: 除以零
at com.eric.test.ExceptionTest.main(ExceptionTest.java:7)
有些时候,我们在后台catch捕获异常后,希望能将异常具体的报错信息和位置存入数据库中,便于后期跟踪并解决问题,此时我们可以将e.printStackTrace()输出的信息转换成字符串,再将字符串保存到数据库中,以下是将e.printStackTrace()输出信息转换成String字符串的工具类
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升