如何让C#编写的UiPath Scope Activity阻止异常向上层传播?
阻止UiPath自定义Scope Activity的异常向上传播
你当前的OnFaulted方法仅记录了异常状态、取消子活动,但没有明确告知UiPath的工作流运行时该异常已被处理,所以运行时仍会将异常包装为RemoteException继续向上传播。
解决方法很简单:在OnFaulted方法末尾调用faultContext.HandleFault(),这个方法会标记异常已被处理,阻止其继续向上层扩散。
修改后的OnFaulted代码如下:
private void OnFaulted(NativeActivityFaultContext faultContext, Exception propagatedException, ActivityInstance propagatedFrom) { Console.WriteLine("OnFaulted"); hasEncounteredException.Set(faultContext, true); exceptionMessage.Set(faultContext, propagatedException.Message); faultContext.CancelChildren(); Cleanup(); // 关键:告知运行时异常已被处理,停止传播 faultContext.HandleFault(); }
另外需要确认你的自定义Scope Activity是否正确继承了NativeActivity(而非CodeActivity),并且没有在其他地方主动抛出或转发异常。只要调用了HandleFault(),工作流就会认为异常已被捕获,后续活动可以正常执行。
内容的提问来源于stack exchange,提问作者Blazwing
相关产品推荐
相关产品推荐

