internal static void AddOverrider(RealmExceptionCodes code, Func <string, string, Exception> handler) { if (!_overriders.ContainsKey(code)) { _overriders.Add(code, handler); } }
public static Exception Create(RealmExceptionCodes exceptionCode, string message) { // these are increasing enum value order switch (exceptionCode) { case RealmExceptionCodes.RealmError: return(new RealmException(message)); case RealmExceptionCodes.RealmFileAccessError: return(new RealmFileAccessErrorException(message)); case RealmExceptionCodes.RealmDecryptionFailed: return(new RealmDecryptionFailedException(message)); case RealmExceptionCodes.RealmFileExists: return(new RealmFileExistsException(message)); case RealmExceptionCodes.RealmFileNotFound: return(new RealmFileNotFoundException(message)); case RealmExceptionCodes.RealmInvalidDatabase: return(new RealmInvalidDatabaseException(message)); case RealmExceptionCodes.RealmOutOfMemory: return(new RealmOutOfMemoryException(message)); case RealmExceptionCodes.RealmPermissionDenied: return(new RealmPermissionDeniedException(message)); case RealmExceptionCodes.RealmMismatchedConfig: return(new RealmMismatchedConfigException(message)); case RealmExceptionCodes.RealmInvalidTransaction: return(new RealmInvalidTransactionException(message)); case RealmExceptionCodes.RealmFormatUpgradeRequired: return(new RealmMigrationNeededException(message)); case RealmExceptionCodes.StdArgumentOutOfRange: return(new ArgumentOutOfRangeException(message)); case RealmExceptionCodes.StdIndexOutOfRange: return(new IndexOutOfRangeException(message)); case RealmExceptionCodes.StdInvalidOperation: return(new InvalidOperationException(message)); default: return(new Exception(message)); } }
internal static Exception Create(RealmExceptionCodes exceptionCode, string message, string detail) { if (_overriders.TryGetValue(exceptionCode, out var handler)) { return(handler(message, detail)); } // these are increasing enum value order switch (exceptionCode) { case RealmExceptionCodes.RealmError: return(new RealmException(message)); case RealmExceptionCodes.RealmFileAccessError: return(new RealmFileAccessErrorException(message)); case RealmExceptionCodes.RealmDecryptionFailed: return(new RealmDecryptionFailedException(message)); case RealmExceptionCodes.RealmFileExists: return(new RealmFileExistsException(message)); case RealmExceptionCodes.RealmFileNotFound: return(new RealmFileNotFoundException(message)); case RealmExceptionCodes.RealmInvalidDatabase: return(new RealmInvalidDatabaseException(message)); case RealmExceptionCodes.RealmOutOfMemory: return(new RealmOutOfMemoryException(message)); case RealmExceptionCodes.RealmPermissionDenied: return(new RealmPermissionDeniedException(message)); case RealmExceptionCodes.RealmMismatchedConfig: return(new RealmMismatchedConfigException(message)); case RealmExceptionCodes.RealmInvalidTransaction: return(new RealmInvalidTransactionException(message)); case RealmExceptionCodes.RealmFormatUpgradeRequired: case RealmExceptionCodes.RealmSchemaMismatch: return(new RealmMigrationNeededException(message)); case RealmExceptionCodes.RealmRowDetached: return(new RealmInvalidObjectException(message)); case RealmExceptionCodes.RealmTableHasNoPrimaryKey: return(new RealmClassLacksPrimaryKeyException(message)); case RealmExceptionCodes.RealmDuplicatePrimaryKeyValue: return(new RealmDuplicatePrimaryKeyValueException(message)); case RealmExceptionCodes.RealmDotNetExceptionDuringMigration: return(new ManagedExceptionDuringMigrationException(message)); case RealmExceptionCodes.RealmClosed: return(new RealmClosedException(message)); case RealmExceptionCodes.RealmSchemaValidation: return(new RealmSchemaValidationException(message)); case RealmExceptionCodes.NotNullableProperty: case RealmExceptionCodes.PropertyMismatch: return(new RealmException(message)); case RealmExceptionCodes.AppClientError: case RealmExceptionCodes.AppCustomError: case RealmExceptionCodes.AppHttpError: case RealmExceptionCodes.AppJsonError: case RealmExceptionCodes.AppServiceError: case RealmExceptionCodes.AppUnknownError: return(new AppException(message, helpLink: null, httpStatusCode: 0)); case RealmExceptionCodes.StdArgumentOutOfRange: case RealmExceptionCodes.StdIndexOutOfRange: return(new ArgumentOutOfRangeException(message)); case RealmExceptionCodes.StdInvalidOperation: return(new InvalidOperationException(message)); case RealmExceptionCodes.ObjectManagedByAnotherRealm: return(new RealmObjectManagedByAnotherRealmException(message)); case RealmExceptionCodes.KeyAlreadyExists: return(new ArgumentException(message)); case RealmExceptionCodes.SessionError: ErrorCode code; if (int.TryParse(detail, out var intCode)) { code = (ErrorCode)intCode; } else { code = ErrorCode.Unknown; } return(new SessionException(message, code)); default: return(new Exception(message)); } }
internal static Exception Create(RealmExceptionCodes exceptionCode, string message) { // these are increasing enum value order switch (exceptionCode) { case RealmExceptionCodes.RealmError: return(new RealmException(message)); case RealmExceptionCodes.RealmFileAccessError: return(new RealmFileAccessErrorException(message)); case RealmExceptionCodes.RealmDecryptionFailed: return(new RealmDecryptionFailedException(message)); case RealmExceptionCodes.RealmFileExists: return(new RealmFileExistsException(message)); case RealmExceptionCodes.RealmFileNotFound: return(new RealmFileNotFoundException(message)); case RealmExceptionCodes.RealmInvalidDatabase: return(new RealmInvalidDatabaseException(message)); case RealmExceptionCodes.RealmOutOfMemory: return(new RealmOutOfMemoryException(message)); case RealmExceptionCodes.RealmPermissionDenied: return(new RealmPermissionDeniedException(message)); case RealmExceptionCodes.RealmMismatchedConfig: return(new RealmMismatchedConfigException(message)); case RealmExceptionCodes.RealmInvalidTransaction: return(new RealmInvalidTransactionException(message)); case RealmExceptionCodes.RealmFormatUpgradeRequired: return(new RealmException(message)); // rare unrecoverable case for now case RealmExceptionCodes.RealmSchemaMismatch: return(new RealmMigrationNeededException(message)); case RealmExceptionCodes.RealmRowDetached: return(new RealmInvalidObjectException(message)); case RealmExceptionCodes.RealmTableHasNoPrimaryKey: return(new RealmClassLacksPrimaryKeyException(message)); case RealmExceptionCodes.RealmDuplicatePrimaryKeyValue: return(new RealmDuplicatePrimaryKeyValueException(message)); case RealmExceptionCodes.RealmDotNetExceptionDuringMigration: return(new ManagedExceptionDuringMigrationException(message)); case RealmExceptionCodes.StdArgumentOutOfRange: return(new ArgumentOutOfRangeException(message)); case RealmExceptionCodes.StdIndexOutOfRange: return(new ArgumentOutOfRangeException(message)); case RealmExceptionCodes.StdInvalidOperation: return(new InvalidOperationException(message)); default: return(new Exception(message)); } }
internal static Exception Create(RealmExceptionCodes exceptionCode, string message) { // these are increasing enum value order switch (exceptionCode) { case RealmExceptionCodes.RealmError: return new RealmException(message); case RealmExceptionCodes.RealmFileAccessError: return new RealmFileAccessErrorException(message); case RealmExceptionCodes.RealmDecryptionFailed: return new RealmDecryptionFailedException(message); case RealmExceptionCodes.RealmFileExists: return new RealmFileExistsException(message); case RealmExceptionCodes.RealmFileNotFound: return new RealmFileNotFoundException(message); case RealmExceptionCodes.RealmInvalidDatabase: return new RealmInvalidDatabaseException(message); case RealmExceptionCodes.RealmOutOfMemory: return new RealmOutOfMemoryException(message); case RealmExceptionCodes.RealmPermissionDenied: return new RealmPermissionDeniedException(message); case RealmExceptionCodes.RealmMismatchedConfig: return new RealmMismatchedConfigException(message); case RealmExceptionCodes.RealmInvalidTransaction: return new RealmInvalidTransactionException(message); case RealmExceptionCodes.RealmFormatUpgradeRequired: return new RealmException(message); // rare unrecoverable case for now case RealmExceptionCodes.RealmSchemaMismatch: return new RealmMigrationNeededException(message); case RealmExceptionCodes.RealmRowDetached: return new RealmInvalidObjectException(message); case RealmExceptionCodes.RealmTableHasNoPrimaryKey: return new RealmClassLacksPrimaryKeyException(message); case RealmExceptionCodes.RealmDuplicatePrimaryKeyValue: return new RealmDuplicatePrimaryKeyValueException(message); case RealmExceptionCodes.RealmDotNetExceptionDuringMigration: return new ManagedExceptionDuringMigrationException(message); case RealmExceptionCodes.RealmClosed: return new RealmClosedException(message); case RealmExceptionCodes.StdArgumentOutOfRange: return new ArgumentOutOfRangeException(message); case RealmExceptionCodes.StdIndexOutOfRange: return new ArgumentOutOfRangeException(message); case RealmExceptionCodes.StdInvalidOperation: return new InvalidOperationException(message); case RealmExceptionCodes.ObjectManagedByAnotherRealm: return new RealmObjectManagedByAnotherRealmException(message); default: return new Exception(message); } }