首页 > 解决方案 > Java 异常消息长度

问题描述

我正在设计一个数据库表,它将记录 Java 异常消息。

对于这种情况(也出于兴趣),我想知道我将遇到的(最大)消息大小。

目前我只对标准的 java 语言异常感兴趣。

例子:

try {
  //Some code, which throws an Exception
} catch(Exception ex) {
  String msg = ex.toString();    //Use toString, because sometimes there is no message
  int size = msg.length();       //How large can this be?
}

可抛出的 toString() 实现:

  public String toString() {
    String var1 = this.getClass().getName();
    String var2 = this.getLocalizedMessage();
    return var2 != null ? var1 + ": " + var2 : var1;
  }

感谢您的回复。额外的问题:是否有一个包含所有 Java 语言异常消息的列表(英文),所以我不必手动检查源文件?

标签: javadatabaseexception

解决方案


Exception.getMessage()返回一个String没有长度限制的。没有“标准”消息长度之类的东西,它将取决于您在代码库中使用的任何库,例如验证异常javax.validation可能很长,而NullPointerException通常没有消息。

您应该从您的应用程序中获取几天的日志并编写一个正则表达式来测量异常的预期长度。有了这个值,您可以做出有根据的猜测。

定义一个VARCHAR具有给定长度的列并在异常消息过长时截断它,或者定义一个 blob/clob 列并存储整个String. 决定因素可能是您的数据库性能,例如Oracle 允许VARCHAR只有 4000 字节


推荐阅读