java 中运行时可触发的异常是否有限制?
Is there a limit for exceptions fireable at runtime in java?
我有一个方法,基本上是一个循环(具有所有适当的捕获条件),其中退出条件是正在关闭的框架。这种方法做一些需要互联网连接的事情。如果没有互联网连接,它将递归调用自身,直到互联网连接恢复。我注意到在触发一定数量的异常后,它会简单地停止以递归方式调用该方法,因此之后不会触发任何异常。运行时可触发的异常是否有限制?
public Download()
{
try {
while(!frame.isWindowClosed())
{
//doSomething
}
} catch (FailingHttpStatusCodeException e) {
e.printStackTrace();
textArea.append("****** FailingHttpStatusCodeException ******\n");
new Download();
} catch (MalformedURLException e) {
e.printStackTrace();
textArea.append("****** MalformedURLException ******\n");
new Download();
} catch (IOException e) {
e.printStackTrace();
textArea.append("****** IOException ******\n");
new Download();
} catch (Exception e) {
e.printStackTrace();
textArea.append("****** Exception ******\n");
new Download();
}
}
我认为最好将循环放在构造函数之外的方法中。然后从构造函数中调用该方法。
我认为你应该做的是有一个机制来检查是否有网络连接..然后如果有连接则执行所需的操作。如果没有互联网连接,则继续。当然,您必须将其包装在一个 while 循环中
在循环中设置try,只要框架没有关闭,循环就会继续。如果所有异常的 catch 块都相同,您可以只捕获最高的异常:
public Download() {
while (!frame.isWindowClosed()) {
try {
// doSomething
} catch (Exception e) {
e.printStackTrace();
textArea.append("****** "+e.getClass().getName()+" ******\n");
}
}
}
只要 doSomething() 没有成功关闭框架,while 循环就会重试。
我有一个方法,基本上是一个循环(具有所有适当的捕获条件),其中退出条件是正在关闭的框架。这种方法做一些需要互联网连接的事情。如果没有互联网连接,它将递归调用自身,直到互联网连接恢复。我注意到在触发一定数量的异常后,它会简单地停止以递归方式调用该方法,因此之后不会触发任何异常。运行时可触发的异常是否有限制?
public Download()
{
try {
while(!frame.isWindowClosed())
{
//doSomething
}
} catch (FailingHttpStatusCodeException e) {
e.printStackTrace();
textArea.append("****** FailingHttpStatusCodeException ******\n");
new Download();
} catch (MalformedURLException e) {
e.printStackTrace();
textArea.append("****** MalformedURLException ******\n");
new Download();
} catch (IOException e) {
e.printStackTrace();
textArea.append("****** IOException ******\n");
new Download();
} catch (Exception e) {
e.printStackTrace();
textArea.append("****** Exception ******\n");
new Download();
}
}
我认为最好将循环放在构造函数之外的方法中。然后从构造函数中调用该方法。
我认为你应该做的是有一个机制来检查是否有网络连接..然后如果有连接则执行所需的操作。如果没有互联网连接,则继续。当然,您必须将其包装在一个 while 循环中
在循环中设置try,只要框架没有关闭,循环就会继续。如果所有异常的 catch 块都相同,您可以只捕获最高的异常:
public Download() {
while (!frame.isWindowClosed()) {
try {
// doSomething
} catch (Exception e) {
e.printStackTrace();
textArea.append("****** "+e.getClass().getName()+" ******\n");
}
}
}
只要 doSomething() 没有成功关闭框架,while 循环就会重试。