gpt4 book ai didi

java - 是否有关于使用 Hessian 时可能抛出哪些运行时异常或潜在原因的文档?

转载 作者:行者123 更新时间:2023-11-29 09:09:14 24 4
gpt4 key购买 nike

我有一个 Java 1.4 网络应用程序,它使用 Hessian 来进行网络服务调用。我试图将它写得尽可能健壮和透明。在调用代理时,我不希望任何 hessian 异常使其脱离我的委托(delegate)类。我希望能够捕获任何 Hessian 运行时异常,解包它们并重新抛出一些主要异常(例如,ConnectException)或将它们重新包装在另一个异常中。但是找到这些异常(exception)情况有点困难。

我的委派类中的每个方法都具有这种结构。

public MyResult myMethod(MyArgsType myArgs)
throws ConnectException
{
try
{
return proxy.myMethod(myArgs);
}
catch (HessianRuntimeException ex)
{
Throwable cause = ex.getCause();
if (cause instanceof ConnectException)
throw (ConnectException)cause;
throw new MyRuntimeException(cause);
}
}

这在我自己的测试中一直运行良好,但其他一些运行时异常正在出现,但我错过了它们。例如,我们最近发现它可能会抛出由 SocketException(远程服务器已关闭)引起的 HessianConnectionException。我完全期待我目前拥有的东西会捕获它。 HessianConnectionException 不是从 HessianRuntimeException 派生的,所以现在我必须添加要捕获的异常。

public MyResult myMethod(MyArgsType myArgs)
throws SocketException, ConnectException
{
try
{
return proxy.myMethod(myArgs);
}
catch (HessianException ex) // HessianConnectionException derives from HessianException
{
Throwable cause = ex.getCause();
if (cause instanceof SocketException)
throw (SocketException)cause;
throw new MyRuntimeException(cause);
}
catch (HessianRuntimeException ex)
{
Throwable cause = ex.getCause();
if (cause instanceof ConnectException)
throw (ConnectException)cause;
throw new MyRuntimeException(cause);
}
}

好吧,这对我来说很好,它必须完成......但它在哪里结束?我找不到任何关于我需要注意的其他运行时异常或其任何潜在原因的文档。

我希望只捕获 HessianExceptionHessianRuntimeException 就足够了,因为这些是我能找到的唯一运行时异常列表 here .但是对于这些新发现的问题,我不确定我想要打开哪些异常,因为它看起来像是一个混合包(据我所知,SocketExceptionConnectException 是同一问题的不同表示)。

是否有关于通过代理调用方法时抛出哪些运行时异常及其所有潜在原因的文档?

最佳答案

我假设您已经进行了网络搜索等,所以这里是一个后备位置,以防您找不到您正在寻找的文档。

在您现有的捕获之后,捕获 RuntimeException。测试异常的类名是否以“Hessian”开头和/或检查其包名。如果不是 Hessian 源,则重新抛出。

在您知道它是 Hessian 异常之后,您可以执行与当前策略类似的操作,查看原因链以查找在您的上下文中有意义的内容或至少来自非 Hessian 包的内容。

关于java - 是否有关于使用 Hessian 时可能抛出哪些运行时异常或潜在原因的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13241297/

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