如何使用函数处理catch块?

时间:2015-02-03 11:15:34

标签: java error-handling try-catch

我很想知道,假设我有一个功能说myFunction()。看一下这个样本:

public void myFunction() {
    try {
        for (int i = 0; i <= 15; i++) {
            System.out.println("Counting: " + i);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

现在,如果在此函数中捕获到任何类型的错误,我想处理此错误,因为这将再次启动myFunction()。怎么做?

我的意思是,如何在catch(Exception e)中包含该函数,以便它可以重新启动该函数?有可能吗?

帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

public void myFunction() {
    boolean successful = false;
    int retryCount = 0;
    while(retryCount < 5 && !successful) {
        try {
            for (int i = 0; i <= 15; i++) {
                System.out.println("Counting: " + i);
            }
            successful = true;
        } catch (Exception e) {
            e.printStackTrace();
            successful = false;
            retryCount++;
        }
    }
}

答案 1 :(得分:0)

这是http://tutorials.jenkov.com/java-exception-handling/basic-try-catch-finally.html#catch-or-propagating-exceptions中关于Catch或Propagate Exceptions的问题。我还建议您编写处理问题的自定义异常并阅读该教程。以下是您必须遵循的事项

  

这取决于具体情况。在许多应用程序中,您无法做到   很多关于异常但告诉用户所请求的操作   失败。在这些应用程序中,您通常可以捕获所有或大多数   在调用堆栈的第一个方法之一集中的异常。   在传播时,您可能仍需要处理异常   虽然(使用finally子句)。例如,如果发生错误   您可能仍需要在Web应用程序中建立数据库连接   关闭finally子句中的数据库连接,即使你不能   做除了告诉用户操作失败以外的任何事情。你怎么   最终处理异常还取决于您是否选择了已选中   或未经检查的应用程序例外。还有更多内容   错误处理跟踪中的其他文本。

我建议你,为了你的预言,你用这种方式宣传你的例外:

public void myFunction()抛出MyException {

try{

for(int i=0; i<=15;i++){
    System.out.println("Counting: "+i);     
    }

}catch(Exception e){
    e.printStackTrace();
    Thows new MyException()
}

}

public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

然后你可以在一个你可以重启的上下文中执行你的功能,如果问题是你想重新开始的原因

 begin for example a while lool

try {
   Function();
}catch MyException {
   start again
}