001: /* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
002: *
003: * ***** BEGIN LICENSE BLOCK *****
004: * Version: MPL 1.1/GPL 2.0
005: *
006: * The contents of this file are subject to the Mozilla Public License Version
007: * 1.1 (the "License"); you may not use this file except in compliance with
008: * the License. You may obtain a copy of the License at
009: * http://www.mozilla.org/MPL/
010: *
011: * Software distributed under the License is distributed on an "AS IS" basis,
012: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
013: * for the specific language governing rights and limitations under the
014: * License.
015: *
016: * The Original Code is Rhino code, released
017: * May 6, 1999.
018: *
019: * The Initial Developer of the Original Code is
020: * Netscape Communications Corporation.
021: * Portions created by the Initial Developer are Copyright (C) 1997-1999
022: * the Initial Developer. All Rights Reserved.
023: *
024: * Contributor(s):
025: * Roger Lawrence
026: *
027: * Alternatively, the contents of this file may be used under the terms of
028: * the GNU General Public License Version 2 or later (the "GPL"), in which
029: * case the provisions of the GPL are applicable instead of those above. If
030: * you wish to allow use of your version of this file only under the terms of
031: * the GPL and not to allow others to use your version of this file under the
032: * MPL, indicate your decision by deleting the provisions above and replacing
033: * them with the notice and other provisions required by the GPL. If you do
034: * not delete the provisions above, a recipient may use your version of this
035: * file under either the MPL or the GPL.
036: *
037: * ***** END LICENSE BLOCK ***** */
038:
039: // API class
040: package org.mozilla.javascript;
041:
042: /**
043: * The class of exceptions raised by the engine as described in
044: * ECMA edition 3. See section 15.11.6 in particular.
045: */
046: public class EcmaError extends RhinoException {
047: static final long serialVersionUID = -6261226256957286699L;
048:
049: private String errorName;
050: private String errorMessage;
051:
052: /**
053: * Create an exception with the specified detail message.
054: *
055: * Errors internal to the JavaScript engine will simply throw a
056: * RuntimeException.
057: *
058: * @param sourceName the name of the source reponsible for the error
059: * @param lineNumber the line number of the source
060: * @param columnNumber the columnNumber of the source (may be zero if
061: * unknown)
062: * @param lineSource the source of the line containing the error (may be
063: * null if unknown)
064: */
065: EcmaError(String errorName, String errorMessage, String sourceName,
066: int lineNumber, String lineSource, int columnNumber) {
067: recordErrorOrigin(sourceName, lineNumber, lineSource,
068: columnNumber);
069: this .errorName = errorName;
070: this .errorMessage = errorMessage;
071: }
072:
073: /**
074: * @deprecated EcmaError error instances should not be constructed
075: * explicitly since they are generated by the engine.
076: */
077: public EcmaError(Scriptable nativeError, String sourceName,
078: int lineNumber, int columnNumber, String lineSource) {
079: this ("InternalError", ScriptRuntime.toString(nativeError),
080: sourceName, lineNumber, lineSource, columnNumber);
081: }
082:
083: public String details() {
084: return errorName + ": " + errorMessage;
085: }
086:
087: /**
088: * Gets the name of the error.
089: *
090: * ECMA edition 3 defines the following
091: * errors: EvalError, RangeError, ReferenceError,
092: * SyntaxError, TypeError, and URIError. Additional error names
093: * may be added in the future.
094: *
095: * See ECMA edition 3, 15.11.7.9.
096: *
097: * @return the name of the error.
098: */
099: public String getName() {
100: return errorName;
101: }
102:
103: /**
104: * Gets the message corresponding to the error.
105: *
106: * See ECMA edition 3, 15.11.7.10.
107: *
108: * @return an implemenation-defined string describing the error.
109: */
110: public String getErrorMessage() {
111: return errorMessage;
112: }
113:
114: /**
115: * @deprecated Use {@link RhinoException#sourceName()} from the super class.
116: */
117: public String getSourceName() {
118: return sourceName();
119: }
120:
121: /**
122: * @deprecated Use {@link RhinoException#lineNumber()} from the super class.
123: */
124: public int getLineNumber() {
125: return lineNumber();
126: }
127:
128: /**
129: * @deprecated
130: * Use {@link RhinoException#columnNumber()} from the super class.
131: */
132: public int getColumnNumber() {
133: return columnNumber();
134: }
135:
136: /**
137: * @deprecated Use {@link RhinoException#lineSource()} from the super class.
138: */
139: public String getLineSource() {
140: return lineSource();
141: }
142:
143: /**
144: * @deprecated
145: * Always returns <b>null</b>.
146: */
147: public Scriptable getErrorObject() {
148: return null;
149: }
150: }
|