001: /*
002: * @(#)URISyntaxException.java 1.7 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package java.net;
028:
029: /**
030: * Checked exception thrown to indicate that a string could not be parsed as a
031: * URI reference.
032: *
033: * @author Mark Reinhold
034: * @version 1.7, 06/10/10
035: * @see URI
036: */
037:
038: public class URISyntaxException extends Exception {
039: private String input;
040: private int index;
041:
042: /**
043: * Constructs an instance from the given input string, reason, and error
044: * index.
045: *
046: * @param input The input string
047: * @param reason A string explaining why the input could not be parsed
048: * @param index The index at which the parse error occurred,
049: * or <tt>-1</tt> if the index is not known
050: *
051: * @throws NullPointerException
052: * If either the input or reason strings are <tt>null</tt>
053: *
054: * @throws IllegalArgumentException
055: * If the error index is less than <tt>-1</tt>
056: */
057: public URISyntaxException(String input, String reason, int index) {
058: super (reason);
059: if ((input == null) || (reason == null))
060: throw new NullPointerException();
061: if (index < -1)
062: throw new IllegalArgumentException();
063: this .input = input;
064: this .index = index;
065: }
066:
067: /**
068: * Constructs an instance from the given input string and reason. The
069: * resulting object will have an error index of <tt>-1</tt>.
070: *
071: * @param input The input string
072: * @param reason A string explaining why the input could not be parsed
073: *
074: * @throws NullPointerException
075: * If either the input or reason strings are <tt>null</tt>
076: */
077: public URISyntaxException(String input, String reason) {
078: this (input, reason, -1);
079: }
080:
081: /**
082: * Returns the input string.
083: *
084: * @return The input string
085: */
086: public String getInput() {
087: return input;
088: }
089:
090: /**
091: * Returns a string explaining why the input string could not be parsed.
092: *
093: * @return The reason string
094: */
095: public String getReason() {
096: return super .getMessage();
097: }
098:
099: /**
100: * Returns an index into the input string of the position at which the
101: * parse error occurred, or <tt>-1</tt> if this position is not known.
102: *
103: * @return The error index
104: */
105: public int getIndex() {
106: return index;
107: }
108:
109: /**
110: * Returns a string describing the parse error. The resulting string
111: * consists of the reason string followed by a colon character
112: * (<tt>':'</tt>), a space, and the input string. If the error index is
113: * defined then the string <tt>" at index "</tt> followed by the index, in
114: * decimal, is inserted after the reason string and before the colon
115: * character.
116: *
117: * @return A string describing the parse error
118: */
119: public String getMessage() {
120: StringBuffer sb = new StringBuffer();
121: sb.append(getReason());
122: if (index > -1) {
123: sb.append(" at index ");
124: sb.append(index);
125: }
126: sb.append(": ");
127: sb.append(input);
128: return sb.toString();
129: }
130:
131: }
|