001 package org.maltparser.core.exception; 002 003 /** 004 * MaltChainedException handles a chain of MaltParser specific exception. 005 * 006 * @author Johan Hall 007 **/ 008 public class MaltChainedException extends Exception { 009 public static final long serialVersionUID = 8045568022124816379L; 010 private Throwable cause = null; 011 012 /** 013 * Creates a MaltChainedException instance 014 */ 015 public MaltChainedException() { 016 super(); 017 } 018 019 /** 020 * Creates a MaltChainedException instance with a message 021 * 022 * @param message a message string 023 */ 024 public MaltChainedException(String message) { 025 super(message); 026 } 027 028 /** 029 * Creates a MaltChainedException instance with a message and keeps track of the cause of the exception. 030 * 031 * @param message a message string 032 * @param cause a cause 033 */ 034 public MaltChainedException(String message, Throwable cause) { 035 super(message); 036 this.cause = cause; 037 } 038 039 040 /* (non-Javadoc) 041 * @see java.lang.Throwable#getCause() 042 */ 043 public Throwable getCause() { 044 return cause; 045 } 046 047 /** 048 * Returns a string representation of the exception chain. Only MaltParser specific exception is included. 049 * 050 * @return a string representation of the exception chain 051 */ 052 public String getMessageChain() { 053 StringBuilder sb = new StringBuilder(); 054 Throwable t = this; 055 056 while (t != null) { 057 if (t.getMessage() != null && t instanceof MaltChainedException) { 058 sb.append(t.getMessage()+"\n"); 059 } 060 t = t.getCause(); 061 } 062 return sb.toString(); 063 } 064 065 /* (non-Javadoc) 066 * @see java.lang.Throwable#printStackTrace() 067 */ 068 public void printStackTrace() { 069 super.printStackTrace(); 070 if (cause != null) { 071 cause.printStackTrace(); 072 } 073 } 074 }