JAVA异常不能只用getMessage/某些异常message文本中不包含异常的名称
对于需要中断运行的异常,我们需要输出到调度系统中,供运维人员参考(详细信息输出到日志)。
但是Java的输出如下,是不行的。虽然大部分时候没有问题但是偶尔报错信息完全看不懂。
catch (Exception e) {
logger.log(Level.SEVERE, "Catch error!",e);
TNU.writeLog(TNU.LogType.ERROR, e.getMessage());
}
所谓偶尔就是比如这个,界面上的错误信息,只显示个“2”……的确很二。

所以把getMessage改成toString。
才看出来是数组越界了。
catch (Exception e) {
logger.log(Level.SEVERE, "Catch error!", e);
TNU.writeLog(TNU.LogType.ERROR,e.toString());
}

C++和Delphi微笑路过
而C++,Delphi就从不会有这个问题(绝大部分的Java异常的Message也能看懂)。
catch (exception &e)
{
FTNU::WriteLog(FTNU::eError, e.what());
}
except
on e: exception do
begin
FTNU.WriteLog(eError,pChar(e.Message),[]);
end;
end;

本文探讨了Java异常处理中常见的问题,特别是使用getMessage方法可能导致的信息缺失。通过对比C++和Delphi的异常处理方式,强调了使用toString方法来获取更完整异常信息的重要性。
1586

被折叠的 条评论
为什么被折叠?



