| /** |
| ****************************************************************************** |
| * Copyright (C) 1996-2005, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ****************************************************************************** |
| * |
| ****************************************************************************** |
| */ |
| |
| package com.ibm.icu4jni.common; |
| |
| /** |
| * Error exception class mapping ICU error codes of the enum UErrorCode |
| * @author syn wee quek |
| * @internal |
| */ |
| public final class ErrorCode extends Exception |
| { |
| |
| // public methods -------------------------------------------------------- |
| |
| /** |
| * Generic mapping from the error codes to java default exceptions. |
| * @param error error code |
| * @return java default exception that maps to the argument error code, |
| * otherwise if error is not a valid error code, null is returned. |
| * @stable ICU 2.4 |
| */ |
| public static final RuntimeException getException(int error) |
| { |
| if (error <= U_ZERO_ERROR && error >= U_ERROR_LIMIT) { |
| return null; |
| } |
| String errorname = ERROR_NAMES_[U_ILLEGAL_ARGUMENT_ERROR]; |
| switch (error) { |
| case U_ILLEGAL_ARGUMENT_ERROR : |
| return new IllegalArgumentException(errorname); |
| case U_INDEX_OUTOFBOUNDS_ERROR : |
| return new ArrayIndexOutOfBoundsException(errorname); |
| case U_BUFFER_OVERFLOW_ERROR : |
| return new ArrayIndexOutOfBoundsException(errorname); |
| case U_UNSUPPORTED_ERROR : |
| return new UnsupportedOperationException(errorname); |
| default : |
| return new RuntimeException(errorname); |
| } |
| } |
| |
| // public static data member --------------------------------------------- |
| |
| /** |
| * Start of information results (semantically successful) |
| */ |
| public static final int U_ERROR_INFO_START = -128; |
| /** |
| * A resource bundle lookup returned a fallback result (not an error) |
| */ |
| public static final int U_USING_FALLBACK_ERROR = -128; |
| /** |
| * A resource bundle lookup returned a result from the root locale (not an |
| * error) |
| */ |
| public static final int U_USING_DEFAULT_ERROR = -127; |
| /** |
| * A SafeClone operation required allocating memory (informational |
| * only |
| */ |
| public static final int U_SAFECLONE_ALLOCATED_ERROR = -126; |
| /** |
| * This must always be the last warning value to indicate the limit for |
| * UErrorCode warnings (last warning code +1) |
| */ |
| public static final int U_ERROR_INFO_LIMIT = -125; |
| |
| /** |
| * No error, no warning |
| */ |
| public static final int U_ZERO_ERROR = 0; |
| /** |
| * Start of codes indicating failure |
| */ |
| public static final int U_ILLEGAL_ARGUMENT_ERROR = 1; |
| public static final int U_MISSING_RESOURCE_ERROR = 2; |
| public static final int U_INVALID_FORMAT_ERROR = 3; |
| public static final int U_FILE_ACCESS_ERROR = 4; |
| /** |
| * Indicates a bug in the library code |
| */ |
| public static final int U_INTERNAL_PROGRAM_ERROR = 5; |
| public static final int U_MESSAGE_PARSE_ERROR = 6; |
| /** |
| * Memory allocation error |
| */ |
| public static final int U_MEMORY_ALLOCATION_ERROR = 7; |
| public static final int U_INDEX_OUTOFBOUNDS_ERROR = 8; |
| /** |
| * Equivalent to Java ParseException |
| */ |
| public static final int U_PARSE_ERROR = 9; |
| /** |
| * In the Character conversion routines: Invalid character or sequence was |
| * encountered |
| */ |
| public static final int U_INVALID_CHAR_FOUND = 10; |
| /** |
| * In the Character conversion routines: More bytes are required to complete |
| * the conversion successfully |
| */ |
| public static final int U_TRUNCATED_CHAR_FOUND = 11; |
| /** |
| * In codeset conversion: a sequence that does NOT belong in the codepage has |
| * been encountered |
| */ |
| public static final int U_ILLEGAL_CHAR_FOUND = 12; |
| /** |
| * Conversion table file found, but corrupted |
| */ |
| public static final int U_INVALID_TABLE_FORMAT = 13; |
| /** |
| * Conversion table file not found |
| */ |
| public static final int U_INVALID_TABLE_FILE = 14; |
| /** |
| * A result would not fit in the supplied buffer |
| */ |
| public static final int U_BUFFER_OVERFLOW_ERROR = 15; |
| /** |
| * Requested operation not supported in current context |
| */ |
| public static final int U_UNSUPPORTED_ERROR = 16; |
| /** |
| * an operation is requested over a resource that does not support it |
| */ |
| public static final int U_RESOURCE_TYPE_MISMATCH = 17; |
| /** |
| * ISO-2022 illlegal escape sequence |
| */ |
| public static final int U_ILLEGAL_ESCAPE_SEQUENCE = 18; |
| /** |
| * ISO-2022 unsupported escape sequence |
| */ |
| public static final int U_UNSUPPORTED_ESCAPE_SEQUENCE = 19; |
| /** |
| * No space available for in-buffer expansion for Arabic shaping |
| */ |
| public static final int U_NO_SPACE_AVAILABLE = 20; |
| /** |
| * This must always be the last value to indicate the limit for UErrorCode |
| * (last error code +1) |
| */ |
| public static final int U_ERROR_LIMIT = 21; |
| /** |
| * Load library flag |
| */ |
| public static boolean LIBRARY_LOADED = false; |
| |
| // private data member ---------------------------------------------------- |
| |
| /** |
| * Array of error code names corresponding to the errorcodes. |
| * ie ERROR_NAMES_[0] = name of U_ZERO_ERROR |
| */ |
| private static final String ERROR_NAMES_[] = { |
| "U_ZERO_ERROR", "U_ILLEGAL_ARGUMENT_ERROR", |
| "U_MISSING_RESOURCE_ERROR", "U_INVALID_FORMAT_ERROR", |
| "U_FILE_ACCESS_ERROR", "U_INTERNAL_PROGRAM_ERROR", |
| "U_MESSAGE_PARSE_ERROR", "U_MEMORY_ALLOCATION_ERROR", |
| "U_INDEX_OUTOFBOUNDS_ERROR", "U_PARSE_ERROR", |
| "U_INVALID_CHAR_FOUND", "U_TRUNCATED_CHAR_FOUND", |
| "U_ILLEGAL_CHAR_FOUND", "U_INVALID_TABLE_FORMAT", |
| "U_INVALID_TABLE_FILE", "U_BUFFER_OVERFLOW_ERROR", |
| "U_UNSUPPORTED_ERROR", "U_RESOURCE_TYPE_MISMATCH", |
| "U_ILLEGAL_ESCAPE_SEQUENCE", "U_UNSUPPORTED_ESCAPE_SEQUENCE" |
| }; |
| /** |
| * Returns the error name of the input error code |
| * @param ec int value of the error code |
| * @return String name of the error code |
| * @stable ICU 2.4 |
| */ |
| public static String getErrorName(int ec){ |
| return ERROR_NAMES_[ec]; |
| } |
| |
| /** |
| * Returns true if the input error code denotes success |
| * @param ec int value of the error code |
| * @return boolean |
| * @stable ICU 2.4 |
| */ |
| public static boolean isSuccess(int ec){ |
| return (ec<=U_ZERO_ERROR); |
| } |
| |
| /** |
| * Returns true if the input error code denotes failure |
| * @param ec int value of the error code |
| * @return boolean |
| * @stable ICU 2.4 |
| */ |
| public static boolean isFailure(int ec){ |
| return (ec>U_ZERO_ERROR); |
| } |
| } |
| |