2 * JSON parse error information
4 * License : The MIT License
5 * Copyright(c) 2009 olyutorskii
8 package jp.sourceforge.jovsonz;
13 * <p>JSON文字列ソースへのパース処理の中断時に投げられる。
15 @SuppressWarnings("serial")
16 public class JsParseException extends Exception {
18 static final String ERRMSG_INVALIDTOKEN =
20 static final String ERRMSG_INVALIDROOT =
21 "top root JSON value must be OBJECT or ARRAY";
22 static final String ERRMSG_NODATA =
23 "We need but no more JSON data";
25 private static final int LINE_UNKNOWN = 0;
28 private final int lineNumber;
33 public JsParseException(){
34 this(null, LINE_UNKNOWN);
41 * @param message 詳細メッセージ。不明な場合はnull
42 * @param lineNumber 行番号。不明な場合は0以下の値
44 public JsParseException(String message, int lineNumber){
45 this(message, (Throwable) null, lineNumber);
52 * @param message 詳細メッセージ。不明な場合はnull
53 * @param cause 原因となった例外。不明な場合はnull
54 * @param lineNumber 行番号。不明な場合は0以下の値
56 public JsParseException(String message, Throwable cause, int lineNumber){
57 super(message, cause);
58 this.lineNumber = lineNumber;
65 * @return 行番号。不明な場合は0以下の値。
67 public int getLineNumber(){
68 return this.lineNumber;
74 * @return 有効な行番号(1以上)を保持していればtrue
76 public boolean hasValidLineNumber(){
77 if(this.lineNumber > 0) return true;
84 * <p>有効な行番号があれば一緒に出力される。
86 * @return {@inheritDoc}
89 public String getMessage(){
90 StringBuilder message = new StringBuilder();
92 String superMessage = super.getMessage();
93 if(superMessage != null){
94 message.append(superMessage);
97 if(hasValidLineNumber()){
98 if(message.length() > 0) message.append(' ');
99 message.append("[line:").append(this.lineNumber).append(']');
102 if(message.length() <= 0) return null;
103 return message.toString();