    001    package calhoun.util;
    002
    003
    004    /** Exception type for general errors.  It is unchecked to simplify error handling in the rest of our java code.
    005     * It should be used for unrecoverable errors that are probably not due to a system configuration.  Users should
    006     * be expected to find a developer when one of these occurs.  In general these will be bugs in the code or corner
    007     * cases you have not implemented.  If there is a whole operation or method that is completely not working, just
    008     * throw UnsupportedOperationException.
    009     */
    010    public final class ErrorException extends RuntimeException{
    011
    012            private static final long serialVersionUID = -7560596902065799827L;
    013
    014            public ErrorException(String arg0) {
    015                    super(arg0);
    016            }
    017
    018            public ErrorException(String arg0, Throwable arg1) {
    019                    //super(arg0, arg1);
    020                    super(arg0);
    021                    if(arg1.getCause() != null)
    022                            initCause(arg1.getCause());
    023                    else
    024                            initCause(arg1);
    025            }
    026
    027            public ErrorException(Throwable arg) {
    028                    //super(arg0);
    029                    if(arg.getCause() != null)
    030                            initCause(arg.getCause());
    031                    else
    032                            initCause(arg);
    033            }
    034
    035            @Override
    036            public String getMessage() {
    037                    StringBuffer ret = new StringBuffer();
    038                    ret.append(super.getMessage());
    039                    Throwable cause = getCause();
    040                    if(cause != null) {
    041                            ret.append(" caused by: ").append(cause.getMessage()).append(" - ").append(cause.toString());
    042                            /*if(cause.getMessage() == null) {
    043                                    Writer w = new StringWriter();
    044                                    cause.printStackTrace(new PrintWriter(w));
    045                                    ret.append(w);
    046                            }*/
    047                    }
    048                    return ret.toString();
    049            }
    050    }