让(
Java)程序在上次运行时识别崩溃的最佳方法是什么,并显示一条消息“看起来这个程序上次崩溃了.请在这里报告此问题:bla@foo.com. ……”
有推荐的方法吗? (坏?)我的想法是:
>让程序在启动时存储临时密钥文件,然后在定期关闭时将其删除.如果文件在启动时存在,则显示该消息.@H_301_5@>识别死锁并在此情况下存储“错误文件”.如果启动时存在“错误文件”,则显示错误消息并将文件移动到存档或类似内容中.
解决方法
Java程序崩溃有三个原因:
>未处理的RuntimeException.这可以通过main中的try-catch轻松解决.@H_301_5@>未处理的错误.这些是罕见的,但也可以主要捕获.我通常主要抓住Throwable.请参阅下面的模板.@H_301_5@>如果您使用线程,请查看Thread.setDefaultUncaughtExceptionHandler()
.@H_301_5@>虚拟机中的错误,或用户杀死的程序,或硬件暴力关闭.这些将导致无法捕获的崩溃.在这里,您最好的选择是使用新文件(…)创建一个标记文件.deleteOnExit().如果有机会,Java会为你清理它.
死锁的问题是如何检测到您有死锁.我还没有看到一致的方法.
import org.apache.commons.lang.exception.ExceptionUtils; public class Demo { public static void main (String[] args) { try { Demo obj = new Demo (); obj.run (args); System.out.println ("Done."); } catch (Throwable t) { ExceptionUtils.printRootCauseStackTrace (t); } } }