我們一般在底層寫方法時,如果方法顯示throws異常,那麼在調用時,也需要將這個異常throws出來,例如 public RetOps<T> assertCode(Integer expect, Function<? super R<T>, ? extends Exception> func) th ...
我們一般在底層寫方法時,如果方法顯示throws異常,那麼在調用時,也需要將這個異常throws出來,例如
public RetOps<T> assertCode(Integer expect, Function<? super R<T>, ? extends Exception> func)
throws Exception {}
調用時
@Test
public void testR() throws Exception {
R<Integer> result = new R<>();
result.setCode(2001);
result.setData(1024);
new RetOps<>(result).assertCode(200, i -> new RuntimeException("error " + i.getCode()))
.assertDataNotNull(r -> new IllegalStateException("oops!")).useData(System.out::println);
}
如果調用時不顯示throws出異常,編譯器會報出錯誤,如下圖
泛型類型聲明異常
public RetOps assertCode(Integer expect, Function<? super R, ? extends Ex> func)
throws Ex {}
調用方法時,不需要再throws Ex了,這種對調用者更友好,如圖
解釋說明
在第一個方法中,使用了泛型類型
而在第二個方法中,直接使用了Exception作為返回類型,因此在調用該方法時需要顯式聲明throws Exception,表明該方法可能會拋出Exception或其子類的異常。
通過泛型定義異常類型可以使代碼更加靈活,同時也能提供更好的類型安全性。
作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980
支付寶掃一掃,為大叔打賞!