1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.jelly.tags.core;
17
18 import org.apache.commons.jelly.JellyTagException;
19 import org.apache.commons.jelly.TagSupport;
20 import org.apache.commons.jelly.XMLOutput;
21
22 /***
23 * A tag which catches exceptions thrown by its body.
24 * This allows conditional logic to be performed based on if exceptions
25 * are thrown or to do some kind of custom exception logging logic.
26 *
27 * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
28 * @version $Revision: 155420 $
29 */
30 public class CatchTag extends TagSupport {
31
32 private String var;
33
34 public CatchTag() {
35 }
36
37
38
39 public void doTag(XMLOutput output) throws JellyTagException {
40 if (var != null) {
41 context.removeVariable(var);
42 }
43 try {
44 invokeBody(output);
45 }
46 catch (Throwable t) {
47 if (var != null) {
48 context.setVariable(var, t);
49 }
50 }
51 }
52
53
54
55
56 /***
57 * Sets the name of the variable which is exposed with the Exception that gets
58 * thrown by evaluating the body of this tag or which is set to null if there is
59 * no exception thrown.
60 */
61 public void setVar(String var) {
62 this.var = var;
63 }
64 }