Bug 964854 - Reveal cause of exception. r=rnewman

This fixes an oversight from Bug 1042929, which neglected to push the
underlying exception cause through to the final exception.
This commit is contained in:
Nick Alexander 2015-06-19 10:50:34 -07:00
parent 344693007a
commit e44b215663
2 changed files with 32 additions and 25 deletions

View File

@ -54,7 +54,7 @@ public class ExtendedJSONObject {
return getJSONParser().parse(in);
} catch (Error e) {
// Don't be stupid, org.json.simple. Bug 1042929.
throw new ParseException(ParseException.ERROR_UNEXPECTED_EXCEPTION);
throw new ParseException(ParseException.ERROR_UNEXPECTED_EXCEPTION, e);
}
}
@ -72,7 +72,7 @@ public class ExtendedJSONObject {
return getJSONParser().parse(input);
} catch (Error e) {
// Don't be stupid, org.json.simple. Bug 1042929.
throw new ParseException(ParseException.ERROR_UNEXPECTED_EXCEPTION);
throw new ParseException(ParseException.ERROR_UNEXPECTED_EXCEPTION, e);
}
}
@ -314,6 +314,7 @@ public class ExtendedJSONObject {
return this.object.toJSONString();
}
@Override
public String toString() {
return this.object.toString();
}

View File

@ -2,13 +2,13 @@ package org.json.simple.parser;
/**
* ParseException explains why and where the error occurs in source JSON text.
*
*
* @author FangYidong<fangyidong@yahoo.com.cn>
*
*/
public class ParseException extends Exception {
private static final long serialVersionUID = -7880698968187728548L;
public static final int ERROR_UNEXPECTED_CHAR = 0;
public static final int ERROR_UNEXPECTED_TOKEN = 1;
public static final int ERROR_UNEXPECTED_EXCEPTION = 2;
@ -16,45 +16,50 @@ public class ParseException extends Exception {
private int errorType;
private Object unexpectedObject;
private int position;
public ParseException(int errorType){
this(-1, errorType, null);
public ParseException(int errorType, Throwable throwable) {
this(-1, errorType, null, throwable);
}
public ParseException(int errorType, Object unexpectedObject){
public ParseException(int errorType, Object unexpectedObject) {
this(-1, errorType, unexpectedObject);
}
public ParseException(int position, int errorType, Object unexpectedObject){
this.position = position;
this.errorType = errorType;
this.unexpectedObject = unexpectedObject;
public ParseException(int position, int errorType, Object unexpectedObject) {
this(-1, errorType, unexpectedObject, null);
}
public ParseException(int position, int errorType, Object unexpectedObject, Throwable throwable) {
super(throwable);
this.position = position;
this.errorType = errorType;
this.unexpectedObject = unexpectedObject;
}
public int getErrorType() {
return errorType;
}
public void setErrorType(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 position;
}
public void setPosition(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
@ -63,14 +68,15 @@ public class ParseException extends Exception {
public Object getUnexpectedObject() {
return unexpectedObject;
}
public void setUnexpectedObject(Object unexpectedObject) {
this.unexpectedObject = unexpectedObject;
}
public String toString(){
@Override
public String toString(){
StringBuffer sb = new StringBuffer();
switch(errorType){
case ERROR_UNEXPECTED_CHAR:
sb.append("Unexpected character (").append(unexpectedObject).append(") at position ").append(position).append(".");