PageRenderTime 342ms CodeModel.GetById 337ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

/jEdit/tags/jedit-4-2-pre14/bsh/UtilEvalError.java

#
Java | 94 lines | 24 code | 9 blank | 61 comment | 3 complexity | 1e57c8e555922a2f88045b89561a32dd MD5 | raw file
 1/*****************************************************************************
 2 *                                                                           *
 3 *  This file is part of the BeanShell Java Scripting distribution.          *
 4 *  Documentation and updates may be found at http://www.beanshell.org/      *
 5 *                                                                           *
 6 *  Sun Public License Notice:                                               *
 7 *                                                                           *
 8 *  The contents of this file are subject to the Sun Public License Version  *
 9 *  1.0 (the "License"); you may not use this file except in compliance with *
10 *  the License. A copy of the License is available at http://www.sun.com    * 
11 *                                                                           *
12 *  The Original Code is BeanShell. The Initial Developer of the Original    *
13 *  Code is Pat Niemeyer. Portions created by Pat Niemeyer are Copyright     *
14 *  (C) 2000.  All Rights Reserved.                                          *
15 *                                                                           *
16 *  GNU Public License Notice:                                               *
17 *                                                                           *
18 *  Alternatively, the contents of this file may be used under the terms of  *
19 *  the GNU Lesser General Public License (the "LGPL"), in which case the    *
20 *  provisions of LGPL are applicable instead of those above. If you wish to *
21 *  allow use of your version of this file only under the  terms of the LGPL *
22 *  and not to allow others to use your version of this file under the SPL,  *
23 *  indicate your decision by deleting the provisions above and replace      *
24 *  them with the notice and other provisions required by the LGPL.  If you  *
25 *  do not delete the provisions above, a recipient may use your version of  *
26 *  this file under either the SPL or the LGPL.                              *
27 *                                                                           *
28 *  Patrick Niemeyer (pat@pat.net)                                           *
29 *  Author of Learning Java, O'Reilly & Associates                           *
30 *  http://www.pat.net/~pat/                                                 *
31 *                                                                           *
32 *****************************************************************************/
33
34
35package bsh;
36
37/**
38	UtilEvalError is an error corresponding to an EvalError but thrown by a 
39	utility or other class that does not have the caller context (Node) 
40	available to it.  A normal EvalError must supply the caller Node in order 
41	for error messages to be pinned to the correct line and location in the 
42	script.  UtilEvalError is a checked exception that is *not* a subtype of 
43	EvalError, but instead must be caught and rethrown as an EvalError by 
44	the a nearest location with context.  The method toEvalError( Node ) 
45	should be used to throw the EvalError, supplying the node.
46	<p>
47
48	To summarize: Utilities throw UtilEvalError.  ASTs throw EvalError.
49	ASTs catch UtilEvalError and rethrow it as EvalError using 
50	toEvalError( Node ).  
51	<p>
52
53	Philosophically, EvalError and UtilEvalError corrospond to 
54	RuntimeException.  However they are constrained in this way in order to 
55	add the context for error reporting.
56
57	@see UtilTargetError
58*/
59public class UtilEvalError extends Exception 
60{
61	protected UtilEvalError() {
62	}
63
64	public UtilEvalError( String s ) {
65		super(s);
66	}
67
68	/**
69		Re-throw as an eval error, prefixing msg to the message and specifying
70		the node.  If a node already exists the addNode is ignored.
71		@see #setNode( bsh.SimpleNode )
72		<p>
73		@param msg may be null for no additional message.
74	*/
75	public EvalError toEvalError( 
76		String msg, SimpleNode node, CallStack callstack  ) 
77	{
78		if ( Interpreter.DEBUG )
79			printStackTrace();
80
81		if ( msg == null )
82			msg = "";
83		else
84			msg = msg + ": ";
85		return new EvalError( msg+getMessage(), node, callstack );
86	}
87
88	public EvalError toEvalError ( SimpleNode node, CallStack callstack ) 
89	{
90		return toEvalError( null, node, callstack );
91	}
92
93}
94