栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

抛出x扩展Exception方法签名

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

抛出x扩展Exception方法签名

像对待您阅读的任何其他通用代码一样对待它。

这是我在Java
8的源代码中
看到的正式签名:

public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X
  • X
    的上限为
    Throwable
    。稍后这将很重要。
  • 我们返回一个类型
    T
    ,其势必会
    Optional
    T
  • 我们期望的
    Supplier
    通配符上限为
    X
  • 我们抛出
    X
    (这是有效的,因为
    X
    其上限为
    Throwable
    )。这在JLS 8.4.6中指定;只要
    X
    被视为的子类型
    Throwable
    ,则其声明在此是有效且合法的。

关于Javadoc的误导存在一个公开的错误。在这种情况下,最好是信任源代码而不是文档,直到该错误被声明为已修复。

至于为什么我们使用

throws X
而不是
throws Throwable

X
一定要绑定到
Throwable
最上层。如果您想要更具体的内容
Throwable
(运行时,检查的或
Error
),那么仅仅抛出
Throwable
将不会给您带来灵活性。

最后一个问题:

是否需要在catch(Throwable t)子句中捕获此方法?

__链下的 某些事物
必须处理异常,例如是

try...catch
块还是JVM本身。理想情况下,人们希望创建一个
Supplier
可以最好地传达其需求的异常的绑定。你不必(并且可能应该
不是 )创建一个
catch(Throwable t)
针对这种情况;
如果您
Supplier
的类型绑定到需要处理的特定异常,那么最好在
catch
以后的处理中使用它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453775.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号