use*_*669 2 java exception intellij-idea
我正在写一个API
void doSomething(args) throws Exception1, Exception2;
Run Code Online (Sandbox Code Playgroud)
Exception1是Exception2的子类型.
Intellij的想法是说"已经在投掷列表中有一个更普遍的例外." 我知道java只要求我在throws子句中使用Exception2但是我认为我应该在throws子句中同时用于文档目的,并向调用者指出他们可以分别捕获每个并为每个执行不同的操作.在我的API实现中,我抛出Exception1并调用抛出Exception2的内部方法.
建议的做法是什么?
谢谢.
您应该编写一个javadoc来解释抛出每个特定异常时的条件.例如,看看ReadableByteChannel.read() javadoc - 该方法在其throws子句中仅声明了IOException,但在其javadoc中描述了该异常的许多更具体的子类.
请写下throws Exception2你的throws条款.如果他们放在catch (Exception1 e)前面,呼叫者仍然可以单独捕捉它们中的每一个catch (Exception2 e).
例如,FileNotFoundException是一个子类型IOException,并且写入是有效的
try {
doSomeStuff();
} catch (FileNotFoundException e) {
System.out.println("There's no such file");
} catch (IOException e) {
System.out.println("Your IO doesn't work");
}
Run Code Online (Sandbox Code Playgroud)
即使doSomeStuff()只被宣布为投掷IOException.但你不能反过来做到这一点.catch在子类的子类之前使用超类的子句是无效的.
| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |