遇到异常后运行Java程序

时间:2014-08-12 11:26:28

标签: java file-io

如果Java在遇到异常而没有关闭并再次手动运行时,如何让Java从一开始就重新运行(main)?

我的程序基本上写在一个文件上。当它找不到文件时,我将抛出FileNotFoundException然后写入文件(比如说hello.txt)。在写完之后,程序关闭(在NetBeans中因为我仍在开发它)并开始在buttom显示:

Exception in thread "main" java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Integer.java:542)
    at java.lang.Integer.parseInt(Integer.java:615)
    at app4pics1word.App4pics1word.cache(App4pics1word.java:127)
    at app4pics1word.App4pics1word.<init>(App4pics1word.java:18)
    at app4pics1word.App4pics1word.main(App4pics1word.java:146)
Java Result: 1

4 个答案:

答案 0 :(得分:2)

你可以试试这个

public static void main(String[] args) {
    try {
        //something wrong happens here
    }catch(Throwable e) {
        e.printStackTrace();
        main(args);
    }
}

答案 1 :(得分:2)

您应该使用异常处理而不是重新启动程序。如果你重新启动程序,错误仍然存​​在,因此你的程序将继续尝试运行永恒,总是失败并出现相同的异常。

您希望捕获异常并确保输入有效:

boolean okInput = false;
int x = -1;
String someData = "rr";
do {
    try {
        x = Integer.parseInt(someData); // try to parse
        okInput = true;
    } catch(NumberFormatException n) {
        // Error, try again
        okInput = false
        someData = "2";
    }
} while(!okInput); // Keep trying while input is not valid

// Here x is a valid number

This tutorial为您提供有关异常如何工作的一般代码。

答案 2 :(得分:0)

这是你要找的?

public static void main(String [] args) {
       boolean done = false;
       do {
         try {
          writeSomeFile();
          done = true;
         } 
         catch (Exception ex) 
         {
           System.out.println("Exception trapped "+ex)
         }
       } while (!done);
    }

答案 3 :(得分:0)

只有当try块成功而没有异常时,才能使它成为一个断开的循环:

public static void main(String[] args) {
    while(true) {
        try {
            ...
            break; //at the end of try block
        } 
        catch (SomeException e) {
            //print error message here, or do whatever
        }
    }
    //program continues here once try block gets through w/o exceptions
    ...
}

但是,我建议在方法中隐藏这个相当丑陋的结构,而不是在main中使用它。