1 /* -*-             c-basic-offset: 4; indent-tabs-mode: nil; -*-  //------100-columns-wide------>|*/
2 // for license please see accompanying LICENSE.txt file (available also at http://www.xmlpull.org/)
3 
4 package org.xmlpull.v1;
5 
6 /**
7  * This exception is thrown to signal XML Pull Parser related faults.
8  *
9  * @author <a href="http://www.extreme.indiana.edu/~aslom/">Aleksander Slominski</a>
10  */
11 public class XmlPullParserException extends Exception {
12     protected Throwable detail;
13     protected int row = -1;
14     protected int column = -1;
15 
16     /*    public XmlPullParserException() {
17           }*/
18 
XmlPullParserException(String s)19     public XmlPullParserException(String s) {
20         super(s);
21     }
22 
23     /*
24     public XmlPullParserException(String s, Throwable thrwble) {
25         super(s);
26         this.detail = thrwble;
27         }
28 
29     public XmlPullParserException(String s, int row, int column) {
30         super(s);
31         this.row = row;
32         this.column = column;
33     }
34     */
35 
XmlPullParserException(String msg, XmlPullParser parser, Throwable chain)36     public XmlPullParserException(String msg, XmlPullParser parser, Throwable chain) {
37         super ((msg == null ? "" : msg+" ")
38                + (parser == null ? "" : "(position:"+parser.getPositionDescription()+") ")
39                + (chain == null ? "" : "caused by: "+chain));
40 
41         if (parser != null) {
42             this.row = parser.getLineNumber();
43             this.column = parser.getColumnNumber();
44         }
45         this.detail = chain;
46     }
47 
getDetail()48     public Throwable getDetail() { return detail; }
49     //    public void setDetail(Throwable cause) { this.detail = cause; }
getLineNumber()50     public int getLineNumber() { return row; }
getColumnNumber()51     public int getColumnNumber() { return column; }
52 
53     /*
54     public String getMessage() {
55         if(detail == null)
56             return super.getMessage();
57         else
58             return super.getMessage() + "; nested exception is: \n\t"
59                 + detail.getMessage();
60     }
61     */
62 
63     //NOTE: code that prints this and detail is difficult in J2ME
printStackTrace()64     public void printStackTrace() {
65         if (detail == null) {
66             super.printStackTrace();
67         } else {
68             synchronized(System.err) {
69                 System.err.println(super.getMessage() + "; nested exception is:");
70                 detail.printStackTrace();
71             }
72         }
73     }
74 
75 }
76 
77