package org.json.simple.parser; /** * ParseException explains why and where the error occurs in source JSON text. * * @author FangYidong * */ public class ParseException extends Exception { private static final long serialVersionUID = -7880698968187728547L; public static final int ERROR_UNEXPECTED_CHAR = 0; public static final int ERROR_UNEXPECTED_TOKEN = 1; public static final int ERROR_UNEXPECTED_EXCEPTION = 2; private int errorType; private Object unexpectedObject; private int position; public ParseException(final int errorType) { this(-1, errorType, null); } public ParseException(final int errorType, final Object unexpectedObject) { this(-1, errorType, unexpectedObject); } public ParseException(final int position, final int errorType, final Object unexpectedObject) { this.position = position; this.errorType = errorType; this.unexpectedObject = unexpectedObject; } public int getErrorType() { return this.errorType; } public void setErrorType(final int errorType) { this.errorType = errorType; } /** * @see org.json.simple.parser.JSONParser#getPosition() * * @return The character position (starting with 0) of the input where the * error occurs. */ public int getPosition() { return this.position; } public void setPosition(final int position) { this.position = position; } /** * @see org.json.simple.parser.Yytoken * * @return One of the following base on the value of errorType: * ERROR_UNEXPECTED_CHAR java.lang.Character ERROR_UNEXPECTED_TOKEN * org.json.simple.parser.Yytoken ERROR_UNEXPECTED_EXCEPTION * java.lang.Exception */ public Object getUnexpectedObject() { return this.unexpectedObject; } public void setUnexpectedObject(final Object unexpectedObject) { this.unexpectedObject = unexpectedObject; } @Override public String getMessage() { final StringBuffer sb = new StringBuffer(); switch (this.errorType) { case ERROR_UNEXPECTED_CHAR: sb.append("Unexpected character (").append(this.unexpectedObject).append(") at position ").append(this.position).append("."); break; case ERROR_UNEXPECTED_TOKEN: sb.append("Unexpected token ").append(this.unexpectedObject).append(" at position ").append(this.position).append("."); break; case ERROR_UNEXPECTED_EXCEPTION: sb.append("Unexpected exception at position ").append(this.position).append(": ").append(this.unexpectedObject); break; default: sb.append("Unkown error at position ").append(this.position).append("."); break; } return sb.toString(); } }