抛出x扩展Exception方法签名

抛出x扩展Exception方法签名,第1张

抛出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
以后的处理中使用它。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5429301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存