OSDN Git Service

241e45f978eefa80ea406c0f7643793ad11dd7e7
[jindolf/JinParser.git] / src / main / java / jp / sourceforge / jindolf / parser / HtmlParseException.java
1 /*
2  * html parse exception
3  *
4  * License : The MIT License
5  * Copyright(c) 2009 olyutorskii
6  */
7
8 package jp.sourceforge.jindolf.parser;
9
10 /**
11  * XHTMLパースの異常系情報。
12  * {@link HtmlParser}の各ハンドラは、この例外をスローすることで
13  * パース処理の即時停止を{@link HtmlParser}に指示することができる。
14  * パース対象({@link DecodedContent})内のパース中断位置を
15  * 保持することができる。
16  * 中断位置が不明な場合は負の値が設定される。
17  */
18 @SuppressWarnings("serial")
19 public class HtmlParseException extends Exception{
20
21     private final int charPos;
22
23     /**
24      * コンストラクタ。
25      */
26     public HtmlParseException(){
27         this(null, -1);
28         return;
29     }
30
31     /**
32      * コンストラクタ。
33      * @param message メッセージ
34      */
35     public HtmlParseException(String message){
36         this(message, -1);
37         return;
38     }
39
40     /**
41      * コンストラクタ。
42      * @param charPos パース中断位置
43      */
44     public HtmlParseException(int charPos){
45         this(null, charPos);
46         return;
47     }
48
49     /**
50      * コンストラクタ。
51      * @param message メッセージ
52      * @param charPos パース中断位置
53      */
54     public HtmlParseException(String message, int charPos){
55         super(message);
56         this.charPos = charPos;
57         return;
58     }
59
60     /**
61      * パース中断位置を返す。
62      * @return パース中断位置
63      */
64     public int getCharPos(){
65         return this.charPos;
66     }
67
68     /**
69      * {@inheritDoc}
70      * @return {@inheritDoc}
71      */
72     @Override
73     public String getMessage(){
74         StringBuilder result = new StringBuilder();
75
76         String message = super.getMessage();
77         if(message != null && message.length() > 0){
78             result.append(message).append(' ');
79         }
80
81         result.append("charPos=").append(this.charPos);
82
83         return result.toString();
84     }
85
86 }