简单地说Unhandled exception: java.lang.Exception
。尝试捕获没有帮助。工作流的@WorkflowMethod是否可以引发任何异常?
public class ChildWorkflowWorker {
public interface ChildWorkflow {
@WorkflowMethod
String run(String s) throws Exception;
}
public static class ChildWorkflowImpl implements ChildWorkflow {
@Override
public String run(String s) throws Exception {
return "";
}
}
}
父工作流程代码
public class ParentWorkflowWorker {
public interface ParentWorkflow {
@WorkflowMethod
void run();
}
public static class ParentWorkflowImpl implements ParentWorkflow {
@Override
public void run() {
ChildWorkflowWorker.ChildWorkflow childWorkflow = Workflow.newChildWorkflowStub(ChildWorkflowWorker.ChildWorkflow.class);
try {
Promise<String> childPromise = Async.function(childWorkflow::run, "");
childPromise.get();
}
catch (Exception e) {
}
}
}
}
谢谢
答案 0 :(得分:0)
异步代码和检查的异常不能很好地配合使用。同样,由于子工作流程和活动调用在技术上是远程方法调用,因此在调用方中引发的异常通常与原始异常不同。
因此,采用的解决方案是永远不要在活动和工作流程方法签名中使用检查的异常。
为避免不必要的包装,可以使用Activity.wrap和Workflow.wrap方法重新抛出已检查的异常。它将包装在内部CheckedExceptionWrapper异常中,该异常将在调用方处自动展开。
try {
return someCall();
} catch (Exception e) {
throw Activity.wrap(e);
}