001package gudusoft.gsqlparser.catalog.input;
002
003import gudusoft.gsqlparser.catalog.diagnostic.CatalogDiagnosticCode;
004
005/**
006 * Strict-mode failure raised by {@link CatalogInputReader#read} or by
007 * {@link CatalogInputReaders#forSource(CatalogInputSource, CatalogLoadOptions)} when no
008 * matching reader is registered (or more than one matches ambiguously).
009 *
010 * <p>Plan §7.1 / §13.1.</p>
011 */
012public class CatalogInputException extends Exception {
013
014    private static final long serialVersionUID = 1L;
015
016    private final CatalogDiagnosticCode code;
017
018    public CatalogInputException(String message) {
019        this(message, null, null);
020    }
021
022    public CatalogInputException(String message, Throwable cause) {
023        this(message, cause, null);
024    }
025
026    public CatalogInputException(String message, CatalogDiagnosticCode code) {
027        this(message, null, code);
028    }
029
030    public CatalogInputException(String message, Throwable cause, CatalogDiagnosticCode code) {
031        super(message, cause);
032        this.code = code;
033    }
034
035    /** Stable diagnostic code, or {@code null} if none was supplied. */
036    public CatalogDiagnosticCode code() {
037        return code;
038    }
039}