1 /*************************************************************************************** 2 * Copyright (c) Jonas BonŽr, Alexandre Vasseur. All rights reserved. * 3 * http://aspectwerkz.codehaus.org * 4 * ---------------------------------------------------------------------------------- * 5 * The software in this package is published under the terms of the LGPL license * 6 * a copy of which has been included with this distribution in the license.txt file. * 7 **************************************************************************************/ 8 package org.codehaus.aspectwerkz.expression; 9 10 import java.io.PrintStream; 11 import java.io.PrintWriter; 12 13 /*** 14 * Thrown when error in the expression. 15 * 16 * @author <a href="mailto:jboner@codehaus.org">Jonas BonŽr </a> 17 */ 18 public class ExpressionException extends RuntimeException { 19 /*** 20 * Original exception which caused this exception. 21 */ 22 private Throwable m_originalException; 23 24 /*** 25 * Sets the message for the exception. 26 * 27 * @param message the message 28 */ 29 public ExpressionException(final String message) { 30 super(message); 31 } 32 33 /*** 34 * Sets the message for the exception and the original exception being wrapped. 35 * 36 * @param message the detail of the error message 37 * @param throwable the original exception 38 */ 39 public ExpressionException(final String message, final Throwable throwable) { 40 super(message); 41 m_originalException = throwable; 42 } 43 44 /*** 45 * Print the full stack trace, including the original exception. 46 */ 47 public void printStackTrace() { 48 printStackTrace(System.err); 49 } 50 51 /*** 52 * Print the full stack trace, including the original exception. 53 * 54 * @param ps the byte stream in which to print the stack trace 55 */ 56 public void printStackTrace(final PrintStream ps) { 57 super.printStackTrace(ps); 58 if (m_originalException != null) { 59 m_originalException.printStackTrace(ps); 60 } 61 } 62 63 /*** 64 * Print the full stack trace, including the original exception. 65 * 66 * @param pw the character stream in which to print the stack trace 67 */ 68 public void printStackTrace(final PrintWriter pw) { 69 super.printStackTrace(pw); 70 if (m_originalException != null) { 71 m_originalException.printStackTrace(pw); 72 } 73 } 74 }