java~用泛型来定义异常类型,避免方法调用时throws异常

这篇具有很好参考价值的文章主要介绍了java~用泛型来定义异常类型,避免方法调用时throws异常。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们一般在底层写方法时,如果方法显示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出异常,编译器会报出错误,如下图

java~用泛型来定义异常类型,避免方法调用时throws异常

泛型类型声明异常

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

调用方法时,不需要再throws Ex了,这种对调用者更友好,如图

java~用泛型来定义异常类型,避免方法调用时throws异常

解释说明

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

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

通过泛型定义异常类型可以使代码更加灵活,同时也能提供更好的类型安全性。文章来源地址https://www.toymoban.com/news/detail-833821.html

到了这里,关于java~用泛型来定义异常类型,避免方法调用时throws异常的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在java中存储对象到redis出现类型转换异常的解决方法

    **出现的问题,**此时的redisCatch已经注入 原因:这里传进来的是一个对象,redis不能直接将对象存到String中,必须将对象进行序列化转成json字符串再存储,其次.传进来的对象不能是null 再重新启动就行了

    2024年02月14日
    浏览(28)
  • 避免低级错误:深入解析Java的ConcurrentModificationException异常

    在软件开发中,我们常常会遇到各种错误和异常。其中有一类比较低级但又常见的错误就是 ConcurrentModificationException 异常。最近了我就写了个这种异常,这个异常通常发生在使用迭代器遍历集合时,同时对集合进行修改,从而导致迭代器检测到集合结构发生变化而抛出异常。

    2024年02月15日
    浏览(31)
  • java -- 异常处理、Collection、Iterator迭代器、泛型

    Java异常处理的五个: try、catch、finally、throw、throws 在编写程序时,我们必须要考虑程序出现问题的情况 当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式

    2023年04月08日
    浏览(42)
  • 泛型方法的定义

    2024年02月05日
    浏览(23)
  • Java获取泛型类型信息

    根据使用泛型位置的不同可以分为:声明侧泛型、使用侧泛型。 声明侧的泛型信息被记录在Class文件的Constant pool中以Signature的形式保存。而使用侧的泛型信息并没有保存。 声明侧泛型 声明侧泛型包括: 泛型类,或泛型接口的声明 带有泛型参数的成员变量 带有泛型参数的方

    2024年02月09日
    浏览(30)
  • 【C++】泛型编程 ① ( 函数模板 | 函数模板概念 | 函数模板意义 | 函数模板定义语法 | 函数模板调用语法 | 显式类型调用 | 自动类型推导 )

    在 C++ 语言中 , 泛型编程 的 核心就是 函数模板 和 类模板 ; 函数模板 Function Template 是 C++ 语言 中的 重要特性 ; 函数模板概念 : 建立一个 \\\" 通用函数 \\\" , 不指定该函数的 函数返回值类型 和 函数参数类型 , 仅使用 \\\" 虚拟类型 \\\" 代表 上述 两种类型 , 该 \\\" 通用函数 \\\" 就是 \\\" 函数模

    2024年02月19日
    浏览(28)
  • 图灵日记之java奇妙历险记--异常&&包装类&&泛型

    在java中,将程序执行过程中发生的不正常行为称为异常 异常可能在编译时发生,也可能在程序运行时发生,根据发生的时机不同,可以将异常分为: 编译时异常 在程序编译期间发生的异常,称为编译时异常,也称为受检查异常 运行时异常 在程序执行期间发生的异常,.称为运行时异常

    2024年01月23日
    浏览(32)
  • Java泛型:灵活多变的类型参数化工具

    👑专栏内容:Java ⛪个人主页:子夜的星的主页 💕座右铭:前路未远,步履不停 在传统的编程方法中,类和方法通常被限定为使用特定的类型。这些类型可能是基础的数据类型(如整数、字符等),或者是由程序员自己定义的复杂类型。这种方式在处理单一类型数据时很有

    2024年02月01日
    浏览(48)
  • 基于C#编程建立泛型Matrix数据类型及对应处理方法

            上一篇文档中描述了如何写一个VectorT类,本次在上一篇文档基础上,撰写本文,介绍如何书写一个泛型Matrix,可以应用于int、double、float等C#数值型的matrix。         本文所描述的MatrixT是一个泛型,具有不同数值类型Matrix矩阵构造、新增、删除、查询、更改、

    2024年02月02日
    浏览(30)
  • Java中泛型和Object类型 初级进阶教程(一)

    在学习的过程中,常常看到某个类或者接口等中使用 ListT, TestT,其中T的作用是什么呢? 1 在类中使用泛型 2 使用多个泛型 3 在类中使用泛型 4 在方法中使用泛型 5 限制泛型类型 6 通配符 (Wildcard) 总结:泛型和Object类型之间的区别 类型安全: 泛型 T : 泛型提供了编译时类型

    2024年02月01日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包