1、使用WorkflowApplication.OnUnhandledException 处理Code异常 ,用于产生异常的Activity:

    public class ExceptionActivity:CodeActivity
    {
        protected override void Execute(CodeActivityContext context)
        {
            ;
             / a;
        }
    }

-无UnhandledExceptionAction方式

static void ExceptionActivityWorkflow_None()
        {
            WorkflowApplication instance = new WorkflowApplication(new ExceptionActivityWorkflow());
            instance.Completed = workflowCompleted;
            instance.Aborted = aborted;
            instance.Run();
        }
private static void aborted(WorkflowApplicationAbortedEventArgs obj)
        {
            Console.WriteLine("aborted,实例编号:{1},Reason:{0}", obj.Reason.Message, obj.InstanceId);
        }

        static void workflowCompleted(WorkflowApplicationCompletedEventArgs e)
        {
            Console.WriteLine("完成,实例编号:{0},状态:{1}", e.InstanceId, e.CompletionState.ToString());
        }

不用[OnUnhandledException]方法处理异常时,流程正常结束.调用实例的[completed],状态为[faulted]

-处理Code异常,[UnhandledExceptionAction.Abort]方式

static void ExceptionActivityWorkflow_Abort()
        {
            WorkflowApplication instance = new WorkflowApplication(new ExceptionActivityWorkflow());
            instance.Completed =workflowCompleted;
            instance.OnUnhandledException = unhandledException_Abort;
            instance.Aborted = aborted;

            instance.Run();
        }

        static UnhandledExceptionAction unhandledException_Abort(WorkflowApplicationUnhandledExceptionEventArgs e)
        {
            System.Console.WriteLine("unhandledException_Abort:{0}", e.UnhandledException.Message);
            return UnhandledExceptionAction.Abort;
        }

        private static void aborted(WorkflowApplicationAbortedEventArgs obj)
        {
            Console.WriteLine("aborted,实例编号:{1},Reason:{0}", obj.Reason.Message, obj.InstanceId);
        }

        static void workflowCompleted(WorkflowApplicationCompletedEventArgs e)
        {
            Console.WriteLine("完成,实例编号:{0},状态:{1}", e.InstanceId, e.CompletionState.ToString());
        }

用[UnhandledExceptionAction.Abort]方式处理异常时,流程被结束.不会调用实例的[completed],会调用实例的[Aborted]

-UnhandledExceptionAction.Terminate

static void exceptionActivityWorkflow_Terminate()
        {
            WorkflowApplication instance = new WorkflowApplication(new ExceptionActivityWorkflow());
            instance.Completed = workflowCompleted;
            instance.OnUnhandledException = unhandledException_Terminate;
            instance.Aborted = aborted;
            instance.Run();
        }

        static UnhandledExceptionAction unhandledException_Terminate(WorkflowApplicationUnhandledExceptionEventArgs e)
        {
            System.Console.WriteLine("unhandledException_Abort:{0}", e.UnhandledException.Message);
            return UnhandledExceptionAction.Terminate;
        }

用[UnhandledExceptionAction.Terminate]方式处理异常时,流程正常结束.会调用实例的[completed],但状态为[faulted]

最新文章

  1. Struts2中跳转问题
  2. 微信公众平台开发——微信授权登录(OAuth2.0)
  3. excel读取指定行
  4. 二十、Android -- SDcard文件读取和保存
  5. Tomcat - DBCP 配置
  6. -_-#toFixed
  7. NSDate与时间戳的那点事
  8. String构造函数originalValue.length>size 它发生
  9. 《STL源代码分析》---stl_list.h读书笔记
  10. java array to list
  11. java将map拼接成“参数=值&参数=值”
  12. Spring Boot 2.x(六):优雅的统一返回值
  13. springboot使用内部tomcat启动和外部tomcat启动的区别
  14. animate.css动画
  15. hadoop fs 命令使用
  16. iOS App与iTunes文件传输的方法和对iOS App文件结构的说明
  17. BZOJ 1925 地精部落(DP)
  18. Codechef MARCH14 GERALD07加强版
  19. openstack如何设置cpu和内存的超配比例
  20. 用Linux完成Oracle自动物理备份

热门文章

  1. WE-1202 (JGX-X5 v1.3)刷openwrt
  2. BigInteger Uva
  3. SourceTree的基本使用
  4. 会话数据的保存——cookie
  5. web配置nagios工具
  6. park、unpark、ord 函数使用方法(转)
  7. 2440test 裸机測试 调试不进main 设置改动方法
  8. C++数据结构和算法每天一练(线性表)
  9. SOAP消息创建
  10. OpenCV 2 Computer Vision Application Programming Cookbook读书笔记