blob: 42d1750107ed41aa13e59ed2556fe0e06e4776af [file] [log] [blame]
/**
******************************************************************************
* 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);
}
}