考虑这样的事情:
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方法引发的异常被CodeActivity中的try..catch块捕获。问题是更高级别的try..catch活动捕获了异常。 是否有可能防止在更高级别捕获此异常?
答案 0 :(得分:0)
是否可以防止在更高级别捕获此异常?
这正是你在你的例子中所做的。
此:
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
块实际上不会捕获任何内容,因为它已经在较低级别的块处理。
答案 1 :(得分:0)
在调试xaml活动中的每个项目期间,我发现下一个If活动中的错误导致TryCatchActivity中处理异常。我使用类似的东西检查变量null:
SomeVar = Nothing
而不是
SomeVar is Nothing
无论如何,谢谢大家的努力。