001    package org.relaxng.datatype;
002    
003    /**
004     * Signals Datatype related exceptions.
005     * 
006     * @author <a href="mailto:jjc@jclark.com">James Clark</a>
007     * @author <a href="mailto:kohsuke.kawaguchi@sun.com">Kohsuke KAWAGUCHI</a>
008     */
009    public class DatatypeException extends Exception {
010            
011            public DatatypeException( int index, String msg ) {
012                    super(msg);
013                    this.index = index;
014            }
015            public DatatypeException( String msg ) {
016                    this(UNKNOWN,msg);
017            }
018            /**
019             * A constructor for those datatype libraries which don't support any
020             * diagnostic information at all.
021             */
022            public DatatypeException() {
023                    this(UNKNOWN,null);
024            }
025            
026            
027            private final int index;
028            
029            public static final int UNKNOWN = -1;
030    
031            /**
032             * Gets the index of the content where the error occured.
033             * UNKNOWN can be returned to indicate that no index information
034             * is available.
035             */
036            public int getIndex() {
037                    return index;
038            }
039    }