尝试 - 捕获返回方法

时间:2016-11-09 02:51:26

标签: java

这种语法是最好的方法吗?

method 1:
   input
   method2():
method2: (input)
   try
   catch
      return(method1())
method3: (input)
   ....

当抛出异常时你很少想要程序崩溃,所以最好有一个return语句,这样用户就可以为变量声明一个新的输入。我正在上课阅读课本,但不包括退课。否则,如果程序刚刚终止,没有返回,有一个try-catch似乎没有意义。

3 个答案:

答案 0 :(得分:0)

如果一段代码处于授权位置以确切知道如何处理异常,它可以捕获它并执行任何操作。

如果不是,它应该抛出它以允许更高级别的代码处理它。有时需要包装这样的异常,以便将事物保持在与方法调用相同的抽象级别。

在顶级,如果没有代码可以处理异常,则由一个人来处理它。您记录异常并向用户道歉。

答案 1 :(得分:0)

可以在调用代码中捕获异常。

说你正在用方法

读取文件
Data readFile(String filename) {
  try {
    // Open file here
  } catch (Exception e) {
    // something has happened but you caught it here itself.
    // Caller of this method may not know that.
  }
}

相反,如果您的方法抛出异常(预定义或您的自定义):

Data readFile(String filename) throws FileNotFoundException {
   // Open file here. If file name wrong, it throws a FileNotFoundException
}

这次调用代码知道该方法可能会抛出异常,从而以它想要的方式处理它。

例如。

Data data = null;
while(data == null) {
  try {
    String f = /*Some code to read a string from input*/;
    data = readFile(f);
  } catch(Exception e) {
    System.out.println("Unable to read. " + e);
  }
}

当然,还有其他方法可以做到。

答案 2 :(得分:0)

您的语法只是易受攻击的事件,它很容易被恶意用户的重复输入引起stackoverflow,导致方法2中的异常。

这个怎么样:

method 1:
  while
    input
    try
        return method2(input)
    catch
method2: (input)
    return (some result)
method3: (input)
   ....