为了账号安全,请及时绑定邮箱和手机立即绑定

何时捕获java.lang.Error?

何时捕获java.lang.Error?

慕丝7291255 2019-07-25 14:14:18
何时捕获java.lang.Error?在什么情况下应该抓住java.lang.Error在申请上
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

一般都不会。但是,有时需要捕获特定的错误。

如果您正在编写框架-ish代码(加载第三方类),那么最好捕获LinkageError(没有找到类def、不满意的链接、不兼容的类更改)。我还看到了一些愚蠢的第三方代码抛出了大量错误,所以您也必须处理这些错误。

顺便说一句,我不确定不可能从OutOfMemory中恢复过来。


查看完整回答
反对 回复 2019-07-26
?
阿晨1998

TA贡献2037条经验 获得超6个赞

一般来说,你应该总是抓住java.lang.Error并将其写入日志或将其显示给用户。我每天都在支持和看到程序员无法告诉程序中发生了什么。

如果您有一个守护进程线程,那么必须阻止它被终止。在其他情况下,您的应用程序将正确工作。

你只应该抓住java.lang.Error在最高层。

如果您查看错误列表,就会发现大多数错误都可以处理。例如,ZipError在读取损坏的zip文件时发生。

最常见的错误是OutOfMemoryErrorNoClassDefFoundError,这在大多数情况下都是运行时问题。

例如:

int length = Integer.parseInt(xyz);byte[] buffer = new byte[length];

能产生一个OutOfMemoryError但这是一个运行时问题,没有理由终止您的程序。

NoClassDefFoundError主要发生在库不存在或使用另一个Java版本时。如果它是程序的一个可选部分,那么您不应该终止您的程序。

我可以给出更多的例子来说明为什么抓到它是个好主意。Throwable并产生有用的错误消息。




查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 818 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信