错误代码处理程序抛出的异常的 Javadoc @throws 标记
Javadoc @throws tags for Exceptions thrown by error code handler
我正在将 C Api 桥接到 Java Api。 C Api 对异常情况使用错误代码。由于每个函数 return 都是这样的错误代码,并且有很多错误代码(大约 100 个),我编写了一个错误代码处理程序,将错误代码转换为一堆更一般的运行时异常:
public class ErrorCodeHandler {
public static void handle(int status) {
switch(status) {
case SUCCESS:
return; // In case of success, simply return
case NO_VALID_DATA:
throw new DataError("No valid data");
...
case NO_CONNECTION:
throw new ConnectionError("No connection");
}
}
}
我的所有自定义异常 class 都继承自特定于我的应用程序的基本异常 class:
public class MyException extends RuntimeException { ... }
public class DataException extends MyException { ... }
...
我的方法只是调用错误代码句柄 return 从对 C API 的调用中编辑:
public void someMethod() {
int status = cBinding.someMethod();
ErrorCodeHandler.handle(status);
}
如果发生错误,该方法将抛出相应的异常。如果没有,它将简单地 return.
现在我面临着如何记录这种异常处理的问题。我读到您没有将运行时异常添加为 throws 子句,而是使用 Javadoc @throws 标记对其进行记录。
现在我的问题是,我应该为我知道可以从方法中抛出的每个不同异常添加一个@throws 标记(通过查找可能的错误代码间接地),还是应该只记录一个通用的@throws MyException ?我觉得第一种方法会使我的文档充满大量几乎无用的 @throws 标记(其中很多错误代码非常罕见),并且需要付出很大的努力来记录这些。第二种方法主要是复制粘贴,但我会失去异常层次结构给我的优势。
有没有人做过类似的事情?关于如何记录此类内容的任何建议?
在你的 javadoc 中写类似 @throws MyException if underlying service fails
的东西是完全合理的。这在 Java SE 中很常见;例如:
- Files.copy 只有
@throws
个 IOException 子句和两个 IOException 子类,尽管它可以抛出许多其他 IOException 子类。
- JDBC 方法 Statement.execute 有一个
@throws
子句用于 SQLException 和 SQLException 的一个子类,即使还有许多其他 SQLException 子类可以抛出。
我正在将 C Api 桥接到 Java Api。 C Api 对异常情况使用错误代码。由于每个函数 return 都是这样的错误代码,并且有很多错误代码(大约 100 个),我编写了一个错误代码处理程序,将错误代码转换为一堆更一般的运行时异常:
public class ErrorCodeHandler {
public static void handle(int status) {
switch(status) {
case SUCCESS:
return; // In case of success, simply return
case NO_VALID_DATA:
throw new DataError("No valid data");
...
case NO_CONNECTION:
throw new ConnectionError("No connection");
}
}
}
我的所有自定义异常 class 都继承自特定于我的应用程序的基本异常 class:
public class MyException extends RuntimeException { ... }
public class DataException extends MyException { ... }
...
我的方法只是调用错误代码句柄 return 从对 C API 的调用中编辑:
public void someMethod() {
int status = cBinding.someMethod();
ErrorCodeHandler.handle(status);
}
如果发生错误,该方法将抛出相应的异常。如果没有,它将简单地 return.
现在我面临着如何记录这种异常处理的问题。我读到您没有将运行时异常添加为 throws 子句,而是使用 Javadoc @throws 标记对其进行记录。
现在我的问题是,我应该为我知道可以从方法中抛出的每个不同异常添加一个@throws 标记(通过查找可能的错误代码间接地),还是应该只记录一个通用的@throws MyException ?我觉得第一种方法会使我的文档充满大量几乎无用的 @throws 标记(其中很多错误代码非常罕见),并且需要付出很大的努力来记录这些。第二种方法主要是复制粘贴,但我会失去异常层次结构给我的优势。
有没有人做过类似的事情?关于如何记录此类内容的任何建议?
在你的 javadoc 中写类似 @throws MyException if underlying service fails
的东西是完全合理的。这在 Java SE 中很常见;例如:
- Files.copy 只有
@throws
个 IOException 子句和两个 IOException 子类,尽管它可以抛出许多其他 IOException 子类。 - JDBC 方法 Statement.execute 有一个
@throws
子句用于 SQLException 和 SQLException 的一个子类,即使还有许多其他 SQLException 子类可以抛出。