12d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// © 2016 and later: Unicode, Inc. and others. 22d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2003-2014, International Business Machines Corporation and * 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. * 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.text; 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.ParseException; 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 142d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * Exception that signals an error has occurred while parsing the 152d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * input to StringPrep or IDNA. 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @author Ram Viswanadha 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class StringPrepParseException extends ParseException { 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Generated by serialver from JDK 1.4.1_01 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert static final long serialVersionUID = 7160264827701651255L; 232d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int INVALID_CHAR_FOUND = 0; 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int ILLEGAL_CHAR_FOUND = 1; 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int PROHIBITED_ERROR = 2; 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int UNASSIGNED_ERROR = 3; 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int CHECK_BIDI_ERROR = 4; 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int STD3_ASCII_RULES_ERROR = 5; 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int ACE_PREFIX_ERROR = 6; 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int VERIFICATION_ERROR = 7; 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int LABEL_TOO_LONG_ERROR = 8; 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int BUFFER_OVERFLOW_ERROR = 9; 642d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int ZERO_LENGTH_LABEL = 10; 692d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 3.8 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int DOMAIN_NAME_TOO_LONG_ERROR = 11; 742d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Construct a ParseException object with the given message 777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * and error code 782d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param message A string describing the type of error that occurred 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param error The error that has occurred 817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public StringPrepParseException(String message,int error){ 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert super(message, -1); 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.error = error; 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.line = 0; 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 882d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Construct a ParseException object with the given message and 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * error code 922d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * 937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param message A string describing the type of error that occurred 947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param error The error that has occurred 952d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * @param rules The input rules string 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param pos The position of error in the rules string 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public StringPrepParseException(String message,int error, String rules, int pos){ 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert super(message, -1); 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.error = error; 1022d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert setContext(rules,pos); 1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.line = 0; 1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Construct a ParseException object with the given message and error code 1072d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param message A string describing the type of error that occurred 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param error The error that has occurred 1102d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * @param rules The input rules string 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param pos The position of error in the rules string 1122d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * @param lineNumber The line number at which the error has occurred. 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * If the parse engine is not using this field, it should set it to zero. Otherwise 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * it should be a positive integer. The default value of this field 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * is -1. It will be set to 0 if the code populating this struct is not 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * using line numbers. 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public StringPrepParseException(String message, int error, String rules, int pos, int lineNumber){ 1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert super(message, -1); 1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.error = error; 1222d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert setContext(rules,pos); 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.line = lineNumber; 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Compare this ParseException to another and evaluate if they are equal. 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * The comparison works only on the type of error and does not compare 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * the rules strings, if any, for equality. 1292d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param other The exception that this object should be compared to 1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @return true if the objects are equal, false if unequal 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1342d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert @Override 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public boolean equals(Object other){ 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if(!(other instanceof StringPrepParseException)){ 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return false; 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return ((StringPrepParseException)other).error == this.error; 1402d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1422d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Mock implementation of hashCode(). This implementation always returns a constant 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * value. When Java assertion is enabled, this method triggers an assertion failure. 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @internal 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @deprecated This API is ICU internal only. 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1492d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert @Override 1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Deprecated 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int hashCode() { 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assert false : "hashCode not designed"; 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return 42; 1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1552d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Returns the position of error in the rules string 1582d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @return String 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.8 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1622d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert @Override 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public String toString(){ 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringBuilder buf = new StringBuilder(); 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert buf.append(super.getMessage()); 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert buf.append(". line: "); 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert buf.append(line); 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert buf.append(". preContext: "); 1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert buf.append(preContext); 1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert buf.append(". postContext: "); 1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert buf.append(postContext); 1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert buf.append("\n"); 1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return buf.toString(); 1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int error; 1772d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * The line on which the error occurred. If the parse engine 1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * is not using this field, it should set it to zero. Otherwise 1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * it should be a positive integer. The default value of this field 1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * is -1. It will be set to 0 if the code populating this struct is not 1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * using line numbers. 1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int line; 1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Textual context before the error. Null-terminated. 1907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * May be the empty string if not implemented by parser. 1917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private StringBuffer preContext = new StringBuffer(); 1937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Textual context after the error. Null-terminated. 1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * May be the empty string if not implemented by parser. 1977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private StringBuffer postContext = new StringBuffer(); 1992d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 2007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static final int PARSE_CONTEXT_LEN = 16; 2012d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 2027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private void setPreContext(String str, int pos){ 2037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert setPreContext(str.toCharArray(),pos); 2047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2052d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 2067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private void setPreContext(char[] str, int pos){ 2077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int start = (pos <= PARSE_CONTEXT_LEN)? 0 : (pos - (PARSE_CONTEXT_LEN-1)); 2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int len = (start <= PARSE_CONTEXT_LEN)? start : PARSE_CONTEXT_LEN; 2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert preContext.append(str,start,len); 2102d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2122d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private void setPostContext(String str, int pos){ 2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert setPostContext(str.toCharArray(),pos); 2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2162d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private void setPostContext(char[] str, int pos){ 2187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int start = pos; 2192d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert int len = str.length - start; 2207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert postContext.append(str,start,len); 2217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2232d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 2247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private void setContext(String str,int pos){ 2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert setPreContext(str,pos); 2267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert setPostContext(str,pos); 2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2282d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 2302d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * Returns the error code of this exception. 2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * This method is only used for testing to verify the error. 2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @return The error code 2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 3.8 2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getError(){ 2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return error; 2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 239