blob: d1b7e0a5f610f9aee3bb34ddf4c3f5cd9eeeff62 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.bsf;
/**
* If something goes wrong while doing some scripting stuff, one of these
* is thrown. The integer code indicates what's wrong and the message
* may give more details. The reason one exception with multiple meanings
* (via the code) [instead of multiple exception types] is used is due to
* the interest to keep the run-time size small.
*
* @author Sanjiva Weerawarana
*/
public class BSFException extends Exception {
public static final int REASON_INVALID_ARGUMENT = 0;
public static final int REASON_IO_ERROR = 10;
public static final int REASON_UNKNOWN_LANGUAGE = 20;
public static final int REASON_EXECUTION_ERROR = 100;
public static final int REASON_UNSUPPORTED_FEATURE = 499;
public static final int REASON_OTHER_ERROR = 500;
int reason;
Throwable targetThrowable;
public BSFException (int reason, String msg) {
super (msg);
this.reason = reason;
}
public BSFException (int reason, String msg, Throwable t) {
this (reason, msg);
targetThrowable = t;
}
public BSFException (String msg) {
this (REASON_OTHER_ERROR, msg);
}
public int getReason () {
return reason;
}
public Throwable getTargetException () {
return targetThrowable;
}
public void printStackTrace () {
if (targetThrowable != null) {
String msg = getMessage ();
if (msg != null && !msg.equals (targetThrowable.getMessage ())) {
System.err.print (msg + ": ");
}
targetThrowable.printStackTrace ();
} else {
super.printStackTrace ();
}
}
}