/**
******************************************************************************
* Copyright (C) 1996-2005, International Business Machines Corporation and *
* others. All Rights Reserved. *
******************************************************************************
*
******************************************************************************
*/
package libcore.icu;
/**
* Error exception class mapping ICU error codes of the enum UErrorCode
* @author syn wee quek
*/
public final class ErrorCode extends Exception {
public static boolean isFailure(int error) {
return error > U_ZERO_ERROR && error < U_ERROR_LIMIT;
}
public static RuntimeException throwException(int error) {
if (error <= U_ZERO_ERROR && error >= U_ERROR_LIMIT) {
return null;
}
switch (error) {
case U_ILLEGAL_ARGUMENT_ERROR:
return new IllegalArgumentException(ERROR_NAMES[error]);
case U_INDEX_OUTOFBOUNDS_ERROR:
case U_BUFFER_OVERFLOW_ERROR:
return new ArrayIndexOutOfBoundsException(ERROR_NAMES[error]);
case U_UNSUPPORTED_ERROR:
return new UnsupportedOperationException(ERROR_NAMES[error]);
}
throw new RuntimeException(ERROR_NAMES[error]);
}
// The errors needed by our CharsetDecoderICU/CharsetEncoderICU.
public static final int U_ZERO_ERROR = 0;
private static final int U_ILLEGAL_ARGUMENT_ERROR = 1;
private static final int U_INDEX_OUTOFBOUNDS_ERROR = 8;
public static final int U_INVALID_CHAR_FOUND = 10;
public static final int U_TRUNCATED_CHAR_FOUND = 11;
public static final int U_ILLEGAL_CHAR_FOUND = 12;
public static final int U_BUFFER_OVERFLOW_ERROR = 15;
private static final int U_UNSUPPORTED_ERROR = 16;
private static final int U_ERROR_LIMIT = 21;
// TODO: this list is incomplete; get these from native code!
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"
};
}