create static method
Recreates ApplicationException object from serialized ErrorDescription.
It tries to restore original exception type using type or error category fields.
description
a serialized error description received as a result of remote call
Implementation
static ApplicationException create(ErrorDescription description) {
ApplicationException error;
var category = description.category;
var code = description.code;
var message = description.message;
var correlationId = description.correlation_id;
// Create well-known exception type based on error category
if (ErrorCategory.Unknown == category) {
error = UnknownException(correlationId, code, message);
} else if (ErrorCategory.Internal == category) {
error = InternalException(correlationId, code, message);
} else if (ErrorCategory.Misconfiguration == category) {
error = ConfigException(correlationId, code, message);
} else if (ErrorCategory.NoResponse == category) {
error = ConnectionException(correlationId, code, message);
} else if (ErrorCategory.FailedInvocation == category) {
error = InvocationException(correlationId, code, message);
} else if (ErrorCategory.FileError == category) {
error = FileException(correlationId, code, message);
} else if (ErrorCategory.BadRequest == category) {
error = BadRequestException(correlationId, code, message);
} else if (ErrorCategory.Unauthorized == category) {
error = UnauthorizedException(correlationId, code, message);
} else if (ErrorCategory.Conflict == category) {
error = ConflictException(correlationId, code, message);
} else if (ErrorCategory.NotFound == category) {
error = NotFoundException(correlationId, code, message);
} else if (ErrorCategory.InvalidState == category) {
error = InvalidStateException(correlationId, code, message);
} else if (ErrorCategory.Unsupported == category) {
error = UnsupportedException(correlationId, code, message);
} else {
error = UnknownException();
error.category = category ?? error.category;
error.status = description.status ?? error.status;
}
// Fill error with details
error.details = StringValueMap.fromValue(description.details);
if (description.cause != null) error.setCauseString(description.cause!);
if (description.stack_trace != null) {
error.setStackTraceString(description.stack_trace!);
}
return error;
}