コード例 #1
0
 internal static void AddOverrider(RealmExceptionCodes code, Func <string, string, Exception> handler)
 {
     if (!_overriders.ContainsKey(code))
     {
         _overriders.Add(code, handler);
     }
 }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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));
            }
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
ファイル: RealmException.cs プロジェクト: realm/realm-dotnet
        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);
            }
        }