java~用泛型来定义异常类型,避免方法调用时throws异常
  2xk0JyO908yA 2024年02月21日 56 0

我们一般在底层写方法时,如果方法显示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了,这种对调用者更友好,如图

解释说明

在第一个方法中,使用了泛型类型 来定义异常类型,因此在调用该方法时不需要显式声明throws Ex。这是因为编译器会根据实际情况推断出可能抛出的异常类型,并进行相应的处理。

而在第二个方法中,直接使用了Exception作为返回类型,因此在调用该方法时需要显式声明throws Exception,表明该方法可能会抛出Exception或其子类的异常。

通过泛型定义异常类型可以使代码更加灵活,同时也能提供更好的类型安全性。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年02月21日 0

暂无评论

推荐阅读
  bVJlYTdzny4o   4天前   12   0   0 Java
2xk0JyO908yA