我正在開發一個庫,並且在一些方法中,我想拋出一個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