Skip to content

Convertir una excepción en resultado ​

La conversión es explícita y conserva la excepción original dentro de un ExceptionError.

csharp
using Greencore.Platform.Errors;
using Greencore.Platform.Results;

var original = new InvalidOperationException("La conexión está cerrada.");
Result<int, ExceptionError> resultado = original.ToResult<int>();
Console.WriteLine(ReferenceEquals(resultado.Error.Exception, original)); // True.

VoidResult<ExceptionError> sinValor = original.ToResult();
ExceptionError error = original.ToError();
Console.WriteLine(ReferenceEquals(error.Exception, sinValor.Error.Exception)); // True.

Estas extensiones se importan con Greencore.Platform.Results. Para crear solo el error sin depender de Results, usa new ExceptionError(exception).

En un catch, convierte únicamente las excepciones que tu contrato quiera representar como fallo. La librería no captura automáticamente las excepciones de Map, Bind o una enumeración; tampoco decide por ti convertir la cancelación en un error.

Recuerda: la excepción está en resultado.Error.Exception, no en el propio resultado.

Uso personal limitado. Uso comercial sujeto a autorización escrita.