Share via


Administrar las excepciones en complementos

La forma en que se administran las excepciones en los complementos depende del tipo de registro de paso de complemento.

  • Las excepciones para los pasos de complemento síncronos cancelarán y revertirán la operación. Tiene la capacidad de controlar el mensaje que se devuelve al usuario.
  • Las excepciones para los pasos del complemento asincrónico se registran y agregan a la tabla Trabajo del sistema, también conocida como Tabla AsyncOperation.

Cancelar la operación actual

En un complemento síncrono, una de las opciones que tiene es rechazar la solicitud. Si la operación no sigue las reglas impuestas por su complemento, puede lance una excepción InvalidPluginExecutionException y proporcione las razones por las que se rechazó la operación en el mensaje.

Idealmente, debe cancelar solo operaciones que utilicen complementos síncronos registrados en la fase de PreValidation. Esta fase normalmente se produce fuera de la transacción de la base de datos principal. La cancelación de una operación antes de que alcance la transacción es muy deseable porque la operación cancelada tiene que revertirse. La reversión de la operación requiere recursos significado y tiene un impacto en el rendimiento del sistema. Las operaciones en las fases PreOperation y PostOperation están siempre en la transacción de la base de datos.

Las fases PreValidation a veces están en una transacción cuando las inicia la lógica en otra operación. Por ejemplo, si crea un registro de entidad de tarea en la fase PostOperation de la creación de una cuenta, la creación de tarea pasa a través de la canalización de ejecuciones de eventos y se produce en la fase PreValidation, pero será parte de la transacción que está creando el registro de la tabla de cuenta. Puede saber si una operación está en una transacción para el valor de la propiedad IExecutionContext.IsInTransaction .

Cómo administran las aplicaciones basadas en modelo las excepciones de complementos síncronos

Cuando lanza una excepción InvalidPluginExecutionException en un complemento sincrónico se muestra al usuario un diálogo de error con el mensaje. Si no proporciona un mensaje, se mostrará un diálogo de error genérico al usuario. Si se produce cualquier otro tipo de excepción, el usuario ve un cuadro de diálogo de error con un mensaje genérico y el mensaje de excepción y el seguimiento de la pila se escriben en la Tabla PluginTraceLog.

Nota

En la interfaz unificada, el cuadro de diálogo de error no admite contenido código HTML en el mensaje. Solo texto.

Errores inesperados

Sin embargo, cuando se produce cualquier excepción en el código del complemento para un paso síncrono, la operación del pipeline que se está procesando en la transacción de la base de datos se cancela y retrocede tanto si lanza una InvalidPluginExecutionException como si no. InvalidPluginExecutionException es la única excepción que le ofrece la capacidad de controlar qué mensaje de excepción se muestra al usuario. Esto es cierto en el caso de las aplicaciones basadas en modelo utilizadas por las soluciones de Dynamics 365.

Eche un vistazo a los InvalidPluginExecutionException constructores disponibles para ver qué tipo de datos relacionados con errores su complemento puede transmitir a la plataforma.

Sugerencia

Le recomendamos que identifique cualquier error y lance una excepción InvalidPluginExecutionException para que pueda controlar lo que se esté mostrando al usuario. Este error puede ser simplemente "An unexpected error occurred", pero también puede agregar información que ayude al administrador a solucionar el problema. De esta manera, tiene parte del control. Si permite que aparezcan otros tipos de excepciones, el error se presentará como un error IsvUnExpected con el mensaje An unexpected error occurred from ISV code., que no es muy útil.

Cómo se tratan las excepciones de complementos asincrónicos

El mensaje de excepción para los complementos asincrónicos registrados se escribe en una tabla Trabajo del sistema, también conocida como Tabla AsyncOperation que se puede ver en el área Trabajos del sistema de la aplicación web. No se muestra ningún diálogo al usuario. Los complementos asincrónicos no participan en la transacción de base de datos que los colocó en la cola, por consiguiente no pueden cancelar la transacción.

Reintentar un complemento asincrónico

Con un paso de complemento asincrónico, puede volver a intentarlo cuando falla un complemento. La causa del error puede ser un error de red o algún otro error que se puede volver a probar al llamar a un recurso externo.

Para volver a intentar su complemento, utilice el constructor InvalidPluginExecutionException (OperationStatus, Int32, String) usando el valor de miembro OperationStatus Enum Retry.

Cuando su complemento arroja este tipo de excepción, el servicio asincrónico intenta ejecutar su complemento cuatro veces. Si la ejecución del complemento no se realiza correctamente en cuatro intentos, la llamada falla.

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).