Java 从递归函数引发异常

Java 从递归函数引发异常,java,exception-handling,Java,Exception Handling,我为一个更大的应用程序构建了一个库/模块,该应用程序会抛出一个函数异常。如果找不到该文件或该文件包含错误格式,则会抛出Exeption 该方法类似于: Shape parse(String path) throws Exception { // load file, parse file, guild graph if ( file does contain bad format ) { throw new Exception("bad format"); } par

我为一个更大的应用程序构建了一个库/模块,该应用程序会抛出一个函数异常。如果找不到该文件或该文件包含错误格式,则会抛出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); 
}
异常将终止我的模块,因为它将在使用我的模块的应用程序中捕获,但这没关系,因为格式不好


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

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

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

new Exception("bad format")
这不是一个很好的实践,因为很难捕捉到特定的异常。您应该创建自己的异常或使用

java.text.ParseException
作为选中的异常

另一方面,您也可以返回一个任意类型,以避免选中的异常。关于在Java中实现它,现有的答案如下:

不,完全正常。我认为这比吞下(不报告)异常或抛出未检查的异常要好。使您的模块易于其他人理解和使用。引发常规
异常
,而引发
BadFormatException
是非常糟糕的做法。(并且只声明要抛出的一个,甚至是取消选中的一个)luk实际上提出了一个很好的观点,我假设您在这里只使用了
Exception
作为示例,而不是在生产代码中。