从递归函数

时间:2018-04-10 18:43:05

标签: java exception-handling

我为一个更大的应用程序构建了一个库/模块,它从函数中抛出一个Exception。如果找不到文件或文件包含格式错误,则抛出Exeption。

该方法类似于:

Shape parse(String path) throws Exception {
  // load file, parse file, guild graph

  if ( file does contain bad format ) {
    throw new Exception("bad format");
  }

  parse(newPath); 
}

该异常将终止我的模块,因为它将被捕获在使用我的模块的应用程序中,但是没关系,因为格式不好。

我想知道的是 - 这是一种不好的做法,从这样的递归函数中抛出异常吗?

1 个答案:

答案 0 :(得分:4)

这实际上取决于你的编程风格。

在递归函数中抛出异常并不错,但抛出

new Exception("bad format")

不是一个很好的做法,因为很难捕捉到特定的例外。您应该创建自己的例外或使用

java.text.ParseException

作为检查例外。

另一方面,您也可以返回Either类型以避免检查异常。有关在Java中实现它的现有答案: Is there an equivalent of Scala's Either in Java 8?