有人能告诉我如何使用投掷活动的例外字段吗?
我需要具体的例子。我正在抛出异常,因为我需要在调用代码中捕获它,然后运行一些清理代码。
感谢您的帮助
理查德
回复Chuck
我尝试了以下操作,工作流取消,但执行没有进入捕获。 知道为什么吗?
public class AbortException : System.Exception
{
}
class manager
{
...
try
{
workflowApp.Run();
}
catch (AbortException ea)
{
}
catch (Exception ex)
{
}
...
}
,异常属性为:New AbortException
答案 0 :(得分:3)
您还在使用WorkflowApplication吗?
它是否在不同的线程上执行,因此围绕Run()的C#try / catch将无济于事。您需要在OnUnhandledException事件中添加一个处理程序,正如我在其他问题中指出的那样。
WorkflowApplication wfApp = new WorkflowApplication(new YourWorkflow());
wfApp.OnUnhandledException = e => UnhandledExceptionAction.Abort;
wfApp.Run();
答案 1 :(得分:2)
最简单的方法是创建一个扩展异常并传递任何所需值的类,如:
public class MyError : Exception
{
public MyError() : base(string.Empty) {}
public MyError(Exception e) : base(e.Message) {}
public int MyCustomValue { get; set; }
}
然后使用它,(将值5传递给catch处理程序)
throw new MyError(){ MyCustomValue = 5 };
然后在你的捕获
try{}
catch(MyError ex)
{
Console.Write(ex.MyCustomValue.ToString());
}