如果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
答案 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
中使用它。