中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

java~用(yong)泛(fan)型(xing)來定義異(yi)常(chang)類型(xing),避免方法(fa)調(diao)用(yong)時throws異(yi)常(chang)

我們一(yi)般(ban)在(zai)底(di)層寫(xie)方法時(shi),如(ru)果方法顯示throws異常,那么(me)在(zai)調用時(shi),也需要將(jiang)這個異常throws出來,例如(ru)

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);

	}

如(ru)果(guo)調用時不(bu)顯示throws出(chu)異常,編譯器會報出(chu)錯誤,如(ru)下圖(tu)

泛型類型聲明異常

public RetOps assertCode(Integer expect, Function<? super R, ? extends Ex> func) 
throws Ex {}

調(diao)用(yong)(yong)方(fang)法(fa)時(shi),不需要再(zai)throws Ex了,這種對調(diao)用(yong)(yong)者更友好,如圖

解釋說明

在第一個方法中,使用了泛型類型來定義異常類型,因此在調用該方法時不需要顯式聲明throws Ex。這是因為編譯器會根據實際情況推斷出可能拋出的異常類型,并進行相應的處理。

而在(zai)第二(er)個方(fang)(fang)法(fa)中,直(zhi)接使用了Exception作(zuo)為返回類型,因此在(zai)調用該(gai)方(fang)(fang)法(fa)時需要顯(xian)式聲明(ming)throws Exception,表明(ming)該(gai)方(fang)(fang)法(fa)可能會拋出Exception或(huo)其子類的(de)異常。

通(tong)過(guo)泛(fan)型(xing)定義(yi)異(yi)常類(lei)型(xing)可以使代(dai)碼(ma)更加靈活,同時(shi)也能(neng)提供更好的(de)類(lei)型(xing)安全(quan)性。

posted @ 2024-02-21 17:17  張占嶺  閱讀(203)  評論(0)    收藏  舉報