我正在开发一个库,并且在一些方法中,我想抛出一个ClassNotFoundException但是eclipse迫使我'添加抛出声明'或'使用try/catch环绕'。我不想实现他们中的任何一个,我想要的是把这个excepcion扔给班上的客户。我已经看到所有扩展了ReflectiveOperationException的类迫使我添加或包围异常。另一方面,我已经看到,扩展RuntimeException的类不需要添加或包围异常。为什么ClassNotFoundException会出现这种行为?
由于我的问题的抽象,想象一个像这样的代码:
public Class getClassForCellType(int cellTypeRequested) {
Class cellClassRequired = null;
if (cellTypeRequested == 0) {
cellClassRequired = CellA.class;
} else if (cellTypeRequested == 1) {
cellClassRequired = CellB.class;
} else {
throw new ClassNotFoundException("cellType Not Available");
}
return cellClassRequired;
}
我想抛出ClassNotFoundException的,因为是发生什么事,我不喜欢用另一种更通用类。有人可以请解释为什么这些类需要直接处理它们。
【JAVA:检查VS未经检查的异常说明](http://stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception -explanation) – 2014-10-20 16:37:31
你有没有听说过“检查异常”这个词?这是Java语言的一个臭名昭着的方面。 – 2014-10-20 16:37:46
添加一个'throws'声明并不是真正“实现”任何东西;这对客户来说更像是一种信号,他们称这种方法可能抛出这个异常,并且他们或者需要捕获它或者声明他们也抛出它。这可能是你想要做的。 – ajb 2014-10-20 16:43:31