Throw Activity 的 Exception 字段中包含什么内容

发布于 2024-11-30 01:09:13 字数 460 浏览 0 评论 0原文

谁能告诉我如何使用 Throw Activity 的 Exception 字段?

我需要具体的例子。我抛出异常,因为我需要在调用代码中捕获它,然后运行一些清理代码。

感谢

理查德的

任何帮助,在回复查克时,

我尝试了以下操作,工作流程取消,但执行没有进入捕获。 知道为什么吗?

public class AbortException : System.Exception
{
}

class manager
{
    ...

    try
    {
        workflowApp.Run();
    }
    catch (AbortException ea)
    {

    }
    catch (Exception ex)
    {

    }

    ...
}

异常属性为:New AbortException

Can anyone tell me how to use the Exception field of the Throw Activity?

I need specific examples. I'm throwing an exception as I need to capture it in the calling code and then run some clean up code.

Thanks for any help

Richard

In reply to Chuck

I tried the following and the workflow cancels but the execution doesn't enter the catches.
Any idea why?

public class AbortException : System.Exception
{
}

class manager
{
    ...

    try
    {
        workflowApp.Run();
    }
    catch (AbortException ea)
    {

    }
    catch (Exception ex)
    {

    }

    ...
}

with an Exception Property of: New AbortException

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

客…行舟 2024-12-07 01:09:13

您仍然在这里使用 WorkflowApplication 对吗?

因此它在不同的线程上执行,因此围绕 Run() 的 C# try/catch 将无济于事。正如我在其他问题中指出的那样,您需要向 OnUnhandledException 事件添加一个处理程序。

WorkflowApplication wfApp = new WorkflowApplication(new YourWorkflow());
wfApp.OnUnhandledException = e => UnhandledExceptionAction.Abort;
wfApp.Run();

You are still using a WorkflowApplication here right?

Is so it executes on a different thread so a C# try/catch around the Run() won't help. You need to add a handler to the OnUnhandledException event as I pointed out in you other question.

WorkflowApplication wfApp = new WorkflowApplication(new YourWorkflow());
wfApp.OnUnhandledException = e => UnhandledExceptionAction.Abort;
wfApp.Run();
ㄟ。诗瑗 2024-12-07 01:09:13

最简单的方法是创建一个扩展异常的类并传递您想要的任何值,例如:

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 };

然后在您的 catch 中

try{}
catch(MyError ex)
{
    Console.Write(ex.MyCustomValue.ToString());
}

The easiest is to create a class that extends exception and pass any values you want, like:

public class MyError : Exception
{
   public MyError() : base(string.Empty) {}
   public MyError(Exception e) : base(e.Message) {}
   public int MyCustomValue { get; set; }
}

Then using it like, (passing the value of 5 to the catch handler)

throw new MyError(){ MyCustomValue = 5 };

Then in your catch

try{}
catch(MyError ex)
{
    Console.Write(ex.MyCustomValue.ToString());
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文