Java异常消息长度

时间:2019-07-15 10:31:58

标签: java database exception

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

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

此刻,我只对标准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?
}

throwable toString()实现:

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

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

2 个答案:

答案 0 :(得分:2)

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

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

要么定义给定长度的VARCHAR列,然后在异常消息太长时截断异常消息,或者定义blob / clob列并存储整个String。决定因素可能是您的数据库性能,例如Oracle allows VARCHAR to have only 4000 bytes

答案 1 :(得分:1)

据我所知,对消息长度没有任何限制,但在大多数情况下,要保证实用性。最大大小为2000个字符可能会很安全,但在DB中将其设置为varchar,这样在每种情况下它只占用等于实际消息大小的空间。另外,异常的方法toString()不会给您任何有意义的信息。如果没有消息,则将其存储为null或空字符串“”。