java - Java 异常消息长度
问题描述
我正在设计一个数据库表,它将记录 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?
}
可抛出的 toString() 实现:
public String toString() {
String var1 = this.getClass().getName();
String var2 = this.getLocalizedMessage();
return var2 != null ? var1 + ": " + var2 : var1;
}
感谢您的回复。额外的问题:是否有一个包含所有 Java 语言异常消息的列表(英文),所以我不必手动检查源文件?
解决方案
Exception.getMessage()
返回一个String
没有长度限制的。没有“标准”消息长度之类的东西,它将取决于您在代码库中使用的任何库,例如验证异常javax.validation
可能很长,而NullPointerException
通常没有消息。
您应该从您的应用程序中获取几天的日志并编写一个正则表达式来测量异常的预期长度。有了这个值,您可以做出有根据的猜测。
定义一个VARCHAR
具有给定长度的列并在异常消息过长时截断它,或者定义一个 blob/clob 列并存储整个String
. 决定因素可能是您的数据库性能,例如Oracle 允许VARCHAR
只有 4000 字节。
推荐阅读
- vhdl - VHDL整数在递增或递减时到处计数
- c++ - 如何为我的代码包含负值?数制转换
- node.js - 为什么我在部署 firebase 函数时会出错?
- javascript - 单击按钮删除整个 tr
- git - `git add` 有一个 git 钩子吗?
- google-apps-script - 如何使谷歌表格查询按顺序返回值
- java - 使用自动完成时 Eclipse 崩溃 - Java 错误日志为 EXCEPTION_ACCESS_VIOLATION
- mysql - Error when creating a table in MySql: check the manual that corresponds to your MySQL server version for the right syntax to use near ')'
- php - 选择输入选择后在数据库中显示数据
- sql - 二进制列等于 0 时重置 SQL 计数