考虑以下内容:
protected overrid void Execute(CodeActivityContext context)
{
try
{
// this method can throw exception, but it's OK for rest of the Workflow
UserStore.PrepareUserData(WorkflowData.Get(context).SecurityID);
[...]
}
catch (Exception exc)
{
Logger.Write(string.Format("There was an exception while preparing execution data for user ID: {0}. Operation ID: {1}", WorkflowData.Get(context).SecurityID, context.ActivityInstanceId), "Workflow, 3, 305, TraceEventType.Warning, "PrepareDataActivity");
}
}
UserStore.PrepareUserData方法引发的异常在try内被捕获。。CodeActivity中的catch块。问题是更高层次的尝试。。catch活动捕获捕获的异常。是否可以防止在更高级别捕获此异常?
是否可以防止在更高级别捕获此异常?
这正是你在你的例子中所做的。
此:
catch (Exception exc)
{
Logger.Write(string.Format("There was an exception while preparing execution data
for user ID: {0}. Operation ID: {1}",
WorkflowData.Get(context).SecurityID,
context.ActivityInstanceId), "Workflow, 3, 305,
TraceEventType.Warning, "PrepareDataActivity");
}
正在吞噬异常,而不是使用throw
重新抛出异常。这意味着顶级catch
块实际上不会捕获任何内容,因为它已经在您的较低级别块中处理过了。
在调试xaml活动中的每个项目时,我在下一个If活动中发现了导致TryCatchActivity中处理异常的错误。我用这样的东西检查变量是否为null:
SomeVar = Nothing
而不是
SomeVar is Nothing
无论如何,感谢大家的努力。