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字符串的工具类

 
posted @   BBS_自律  阅读(1134)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
点击右上角即可分享
微信分享提示