convert method
Failure
convert({
- required Object error,
- StackTrace? stackTrace,
- List<
ExceptionConverter< ? exceptionConverters,Exception, void> > - MessageLog? messageLog,
Converts the given error
into a Failure.
The error
is expected to be an Exception object.
If the given error
is an Error, then it is re-thrown. For more info,
see https://stackoverflow.com/a/57004304.
If the given error
is not an Exception, then an ArgumentError is
thrown.
A messageLog can be provided to log the result if the target ExceptionConverter supports it.
Implementation
Failure convert({
required Object error,
StackTrace? stackTrace,
List<ExceptionConverter<Exception, void>>? exceptionConverters,
MessageLog? messageLog,
}) {
if (error is Error) {
// Errors must not be caught.
// See https://stackoverflow.com/a/57004304
if (stackTrace != null) {
return Error.throwWithStackTrace(error, stackTrace);
} else {
throw error;
}
}
if (error is! Exception) {
throw ArgumentError(
'The given error is not an Exception: ${error.runtimeType}',
);
}
final extendedExceptionConverters =
_extendedExceptionConverters<void>(exceptionConverters);
for (final exceptionConverter in extendedExceptionConverters) {
if (exceptionConverter.exceptionEquals(error)) {
return exceptionConverter.convert(
exception: error,
messageLog: messageLog,
logger: logger,
stackTrace: stackTrace,
);
}
}
// coverage:ignore-start
throw StateError(
'No matching exception conversion found for ${error.runtimeType}',
);
// coverage:ignore-end
}