【发布时间】:2013-10-03 19:53:04
【问题描述】:
我很清楚,通常 Java 程序不应该捕获 Throwable,因为它像 OutOfMemoryError 一样捕获 Error-s。 100% 清晰。
但是。
如果我有一个多线程应用程序,通常最好的做法是我应该有一个UncaughtExceptionHandler,如果RuntimeException 或Error 发生,它会做一些事情。我通常想做的就是简单地记录。记录RuntimeExceptions 不会有什么伤害,这很清楚。但问题出现在我身上:
我可以在 UncaughtExceptionHandler 中捕获和安全记录哪些错误,如果我记录它,它不会处理我的整个应用程序?存在哪些错误,并不意味着应用程序必须立即停止?
例如,如果我得到一个OutOfMemoryError,我只需要一个printStackTrace 来标准输出,因为记录它的内存需要可能会杀死其他线程。但是在我看来,StackOverflowError 被记录是完全安全的,因为这意味着当前线程的堆栈区域已满。记录它是安全的。 您还会记录哪些其他Error 后代?
【问题讨论】:
标签: java error-handling uncaught-exception throwable uncaughtexceptionhandler