WF4.0 Beta1之旅(2):异常处理

 1.WF3.5中主要使用FaultHandlerActivity来模拟TryCatch捕获异常,现在从WF4.0 beta1来看工具箱中已经没有了FaultHandlerActivity活动,顺序工作流也没有了错误处理视图,取而代之出现了Try/Catch,Catch<T>,Thorw活动,本文就介绍下这几个活动。关于WF3.5中对异常的处理方式,可以参考下文:坚持学习WF(24):WF中的异常处理

  2.我们依然使用顺序工作流模板,我们完成这样一个工作流,工作流的输入参数为UserName,输出参数为Greeting,工作流中会根据输入参数的不同而输出不同的信息,我们要处理的异常就是如果工作流没有提供输入的情况下。

  3.工作流的参数如下:

  UserName输入参数,Greeting输出参数,如下。

WF4.0 Beta1之旅(2):异常处理

  图片看不清楚?请点击这里查看原图(大图)。

  4.给做工作增加一个变量FirstWord.注意变量是有作用域的,即他的Scope属性。

WF4.0 Beta1之旅(2):异常处理

  图片看不清楚?请点击这里查看原图(大图)。

  5.下面我们看整个工作流的逻辑,工作流上面是try catch,下面是Assign,Assign将Greeting的值设置为FirstWord+“,”+UserName,如下图:

WF4.0 Beta1之旅(2):异常处理

  trycatch就是我们的逻辑部分。Try中就是我们要执行的程序,catches中捕获异常并处理,

  6.我们先来看下Try中逻辑,我们根据工作流的输入参数UserName来判断其长度其否为偶数,来设置变量FirstWord的值,如下:

 

WF4.0 Beta1之旅(2):异常处理

  图片看不清楚?请点击这里查看原图(大图)。

  7.在Catches中我们来处理捕获到得异常,这个部分我们可以拖入多个Catch<T>活动,左边为异常类型,右边为相应处理的Action,拖入catch<T>会自动出现如下对话框选择异常类型。如下图:

WF4.0 Beta1之旅(2):异常处理

  这个例子中我们捕获异常后的处理方式是将异常再次抛出,我们加入一个Throw活动,并设置其Exception属性。如下图:

WF4.0 Beta1之旅(2):异常处理

  8.工作流的部分我们就完成了,下面是宿主程序:

不论工作流是否发生异常都会执行OnCompleted事件,只不过e.CompletionState不同,有异常的时候为Fault,正常为Closed。

  工作流也可以使用WorkflowInstance的OnUnhandledException事件来处理在TryCatch中没有处理的异常。

  9.单元测试代码如下:

系列文章:WF4.0 Beta1之旅(1):基本介绍

 WF4.0 Beta1之旅(3):全新的FlowChart

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值