OSDN Git Service

from subversion repository
[jindolf/JinParser.git] / src / main / java / jp / sourceforge / jindolf / parser / DecodeException.java
1 /*\r
2  * decode exception\r
3  *\r
4  * Copyright(c) 2009 olyutorskii\r
5  * $Id: DecodeException.java 894 2009-11-04 07:26:59Z olyutorskii $\r
6  */\r
7 \r
8 package jp.sourceforge.jindolf.parser;\r
9 \r
10 /**\r
11  * デコード異常系情報。\r
12  * {@link DecodeHandler}の各メソッドは、この例外をスローすることで\r
13  * デコード処理の即時停止を{@link StreamDecoder}に指示することができる。\r
14  * デコード元(バイトストリーム)の中のエラー発生位置と\r
15  * デコード先(CharSequence)の中のエラー発生位置を保持することができる。\r
16  * いずれの値も、エラー発生位置が不明な場合は負の値が設定される。\r
17  */\r
18 @SuppressWarnings("serial")\r
19 public class DecodeException extends Exception{\r
20 \r
21     private final int bytePos;\r
22     private final int charPos;\r
23 \r
24     /**\r
25      * コンストラクタ。\r
26      */\r
27     public DecodeException(){\r
28         this(null);\r
29         return;\r
30     }\r
31 \r
32     /**\r
33      * コンストラクタ。\r
34      * @param message メッセージ\r
35      */\r
36     public DecodeException(String message){\r
37         this(message, -1, -1);\r
38         return;\r
39     }\r
40 \r
41     /**\r
42      * コンストラクタ。\r
43      * 位置情報が不明な場合は負の値を渡す。\r
44      * @param bytePos デコード元エラー発生バイト位置\r
45      * @param charPos デコード先エラー発生文字位置\r
46      */\r
47     public DecodeException(int bytePos, int charPos){\r
48         this(null, bytePos, charPos);\r
49         return;\r
50     }\r
51 \r
52     /**\r
53      * コンストラクタ。\r
54      * 位置情報が不明な場合は負の値を渡す。\r
55      * @param message メッセージ\r
56      * @param bytePos デコード元エラー発生バイト位置\r
57      * @param charPos デコード先エラー発生文字位置\r
58      */\r
59     public DecodeException(String message, int bytePos, int charPos){\r
60         super(message);\r
61         this.bytePos = bytePos;\r
62         this.charPos = charPos;\r
63         return;\r
64     }\r
65 \r
66     /**\r
67      * デコード元エラー発生位置を返す。\r
68      * 単位はbyte単位。\r
69      * @return エラー発生位置。不明な場合は負の値。\r
70      */\r
71     public int getBytePos(){\r
72         return this.bytePos;\r
73     }\r
74 \r
75     /**\r
76      * デコード先エラー発生位置を返す。\r
77      * 単位はchar単位。\r
78      * @return エラー発生位置。不明な場合は負の値。\r
79      */\r
80     public int getCharPos(){\r
81         return this.charPos;\r
82     }\r
83 \r
84     /**\r
85      * {@inheritDoc}\r
86      * @return {@inheritDoc}\r
87      */\r
88     @Override\r
89     public String getMessage(){\r
90         StringBuilder result = new StringBuilder();\r
91 \r
92         String message = super.getMessage();\r
93         if(message != null && message.length() > 0){\r
94             result.append(message).append(' ');\r
95         }\r
96 \r
97         result.append("bytePos=").append(this.bytePos);\r
98         result.append(' ');\r
99         result.append("charPos=").append(this.charPos);\r
100 \r
101         return result.toString();\r
102     }\r
103 \r
104 }\r