gpt4 book ai didi

java - IncationContext.proceed() 异常?

转载 作者:行者123 更新时间:2023-12-01 05:24:21 27 4
gpt4 key购买 nike

javax.interceptor.InitationContext 的proceed() 方法是否抛出除目标方法或干预代码之外的任何异常?调用目标异常怎么样?一般来说,文档在这一点上似乎不完整。

[编辑]我问:InvocableTargetException 是什么“通常”是由 InspirationContext 的实现者抛出的?或者通常会重新抛出原始异常?或者是其他东西?

当然,“抛出”声明允许所有异常,但我想知道“契约”是什么?一个自然的契约是保持调用的目标方法的异常不变。当然,这不能用 Java 类型系统来表达。而且它没有记录或任何东西。因此,原则上,任何异常都可能被抛出。原则上可以以任何方式包装目标方法的异常;不仅仅是 InvocableTargetException。

这肯定会产生架构后果。如果 InvokingContext 的实现没有“契约”,异常系统将变得几乎毫无用处;本质上,我们所能知道的就是出现了一个异常(exception)。所以我问这样一个“契约(Contract)”,即实现的预期行为:有吗?

最佳答案

  • 在运行时,编译器无法通过反射分析方法调用,因此会将它们包装到名为 InitationTargetException 的异常中。

    An InvocationTargetException is thrown when a constructor called through Constructor.newInstance(), or a method called through Method.invoke() throws an exception. The InvocationTargetException encapsulates the thrown exception, which can be retrieved using getTargetException().

    您必须解开此异常才能找到原始的根本原因。

  • 如文档所述,InvocationContext.proceed() 抛出 java.lang.Exception。它进一步调用调用行中的其他拦截器。

    我没有遇到任何问题,但在使用嵌套拦截器时可能会出现问题,并且其中一个拦截器抛出异常,可能会导致级联异常链。

关于java - IncationContext.proceed() 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9889581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com