删除文件如果它崩溃了我的应用程序(2)

时间:2011-08-08 07:47:40

标签: java error-handling crash

好的,所以我几乎得到了这个。但似乎有一些我无法解决的逻辑错误。请注意,我不能使用try / catch。无需问为什么


修改

for(String File : List){


        final String FilePath = getPath() + "/" + File;
        Render renderer = renderFile(FilePath);
        Runtime.getRuntime().addShutdownHook(new Thread(){
             public void run() {
                    deleteFile(FilePath);
                }
            });

        deleteFile(FilePath);
        updateReport(stuff);
        writeReportToFile(Report.toString());

我希望它删除导致我崩溃的文件..如果应用程序崩溃但似乎没有工作。我错误地称它为什么? confused

最终编辑

好好玩耍后我终于开始工作!!谢谢大家

2 个答案:

答案 0 :(得分:1)

从我上次的问题看,你

  • 处理图片,
  • 一个或多个图像将使JVM崩溃,
  • 我们无法捕获该异常/错误和
  • 我们想在下次运行中删除损坏的图像

一个简单的解决方案就是这样:

  1. 每次在从图像文件中读取字节之前,将该图像的名称保留为文件(例如:processingImage.txt
  2. 每次成功处理图片,请删除processingImage.txt
  3. 如果应用程序崩溃,则processingImage.txt包含违规图像的名称
  4. 如果您启动该应用程序,请检查是否存在processingImage.txt,阅读图像名称,删除图像并删除processingImage.txt

答案 1 :(得分:0)

我对此感觉不好,但您可以在应用程序上添加一个关闭钩子。 (请注意,在处理关闭挂钩时,杀死应用程序的唯一方法是通过任务管理器 - 所以请确保您的关闭挂钩确实有效/不会永远/不会导致死锁)

以下main

public static void main(String[] args) {
    Runtime.getRuntime().addShutdownHook(new Thread() {
        public void run() {
                System.out.println("I'm called on shutown.");
            }
        });
    throw new RuntimeException("Uncaught Exception");
}

打印出来:

Exception in thread "main" java.lang.RuntimeException: Uncaught Exception
    at stackoverflowtests.ShutdownHookTester.main(ShutdownHookTester.java:11)
I'm called on shutown.