gpt4 book ai didi

java - 如何从 Websphere 开始工作任务进一步传递异常?

转载 作者:行者123 更新时间:2023-11-30 06:52:18 25 4
gpt4 key购买 nike

我有自己的类,它使用以下运行方法实现 com.ibm.websphere.asynchbeans.Work:

@Override
public void run() {
try {
agentManager.loadLibContent(agent);
} catch (Exception e) {
ErrorAnalizer.report(e);
log.error("some err: "+e.getMessage());
//this.setStatus("error");
//throw new RuntimeException(e);
} finally {
workLoadManager.delRunTask(getTaskHistory());
}
}

此工作类传递给 com.ibm.websphere.asynchbeans.WorkManager 的 startWork(Work var1) 方法。

当我在 try block 中遇到异常时,它会被捕获并记录下来,没问题。

但是我希望该异常一直向上,直到它到达调用 websphere 的 startWork 的第一个方法。

怎么做? Runnable 不允许抛出已检查的异常。 RuntimeException 没有帮助。似乎 startWork 将其吞入内部某处。

糟糕的是,第一个方法位于另一个项目模块中,我无法从 catch block 访问它以传递信息来完成某些工作。

我也尝试在我的工作类中设置状态,然后在之后获取它,但看起来 startWork 不允许我更改传递的对象。

感谢任何帮助。谢谢!

最佳答案

您需要使用 WorkItem.getResult方法:

MyWork myWork = ...
WorkItem wi = wm.startWork(myWork);
...
try {
myWork = (MyWork)wi.getResult();
...
} catch (WorkException e) {
Throwable cause = e.getCause();
...
}

那么,有两种选择:

  1. run 方法中的 catch block 可以将异常存储在实例字段中,然后您可以在调用 getResult 后检索它。
  2. run 方法抛出一个未经检查的异常,它应该是被捕获的 WorkException 的原因。

关于java - 如何从 Websphere 开始工作任务进一步传递异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39145887/

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