|
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
|
Traducción
Original
|
Excepciones
-
Un tiempo de espera de transacciones en TransactionScope. -
Una excepción explícita iniciada por el flujo de trabajo mediante la actividad Throw. -
Una excepción .NET Framework 4.5 RC iniciada desde una actividad. -
Una excepción iniciada desde el código externo, como bibliotecas, componentes o servicios que se usan en el flujo de trabajo.
-
Cancel - una instancia de flujo de trabajo cancelada es una salida correcta de una ejecución de bifurcación. Puede modelar el comportamiento de cancelación (por ejemplo, con una actividad CancellationScope). Se invoca el controlador Completed cuando el proceso de cancelación se completa. Un flujo de trabajo cancelado está en estado Cancelled. -
Terminate - una instancia de flujo de trabajo finalizada no puede reanudarse o reiniciarse. Esto desencadena el evento Completed en el que puede proporcionar una excepción como razón por la que finalizó. Se invoca el controlador Terminated cuando el proceso de finalización se completa. Un flujo de trabajo finalizado está en el estado Faulted. -
Abort - las instancias de flujo de trabajo anuladas solo se pueden reanudar si se han configurado para ser persistentes. Sin persistencia, un flujo de trabajo no se puede reanudar. En el punto en que se anula un flujo de trabajo, se perderá todo el trabajo realizado (en memoria) desde el último punto de persistencia. Para un flujo de trabajo anulado, se invoca el controlador Aborted usando la excepción como motivo cuando se completa el proceso de anulación. Sin embargo, a diferencia de Cancelled y Terminated, no se invoca el controlador Completed. Un flujo de trabajo anulado está en un estado Aborted.
Activity wf = new Sequence { Activities = { new WriteLine { Text = "Starting the workflow." }, new Throw { Exception = new InArgument<Exception>((env) => new ApplicationException("Something unexpected happened.")) }, new WriteLine { Text = "Ending the workflow." } } }; WorkflowApplication wfApp = new WorkflowApplication(wf); wfApp.OnUnhandledException = delegate(WorkflowApplicationUnhandledExceptionEventArgs e) { // Display the unhandled exception. Console.WriteLine("OnUnhandledException in Workflow {0}\n{1}", e.InstanceId, e.UnhandledException.Message); Console.WriteLine("ExceptionSource: {0} - {1}", e.ExceptionSource.DisplayName, e.ExceptionSourceInstanceId); // Instruct the runtime to terminate the workflow. return UnhandledExceptionAction.Terminate; // Other choices are UnhandledExceptionAction.Abort and // UnhandledExceptionAction.Cancel }; wfApp.Run();
Administrar excepciones con la actividad TryCatch
DelegateInArgument<ApplicationException> ex = new DelegateInArgument<ApplicationException>() { Name = "ex" }; Activity wf = new TryCatch { Try = new Throw() { Exception = new InArgument<Exception>((env) =>new ApplicationException("An ApplicationException was thrown.")) }, Catches = { new Catch<ApplicationException> { Action = new ActivityAction<ApplicationException> { Argument = ex, Handler = new WriteLine() { Text = new InArgument<string>((env) => ex.Get(env).Message) } } } }, Finally = new WriteLine() { Text = "Executing in Finally." } };
-
La excepción es detectada por una actividad TryCatch de mayor nivel en el flujo de trabajo, independientemente de si se vuelven a producir desde TryCatch de mayor nivel. -
La excepción no la controla un TryCatch de mayor nivel, se escapa la raíz del flujo de trabajo, y el flujo de trabajo se configura para cancelarse en lugar de finalizarse o anularse. Los flujos de trabajo hospedados mediante WorkflowApplication pueden configurar esto controlando OnUnhandledException y devolviendo Cancel. Un ejemplo de cómo administrar OnUnhandledException se proporciona anteriormente en este tema. Los servicios de flujo de trabajo pueden configurar esto mediante WorkflowUnhandledExceptionBehavior y especificando Cancel. Para obtener un ejemplo de cómo configurar WorkflowUnhandledExceptionBehavior, vea Extensibilidad de host de servicio de flujo de trabajo.