Package net.sf.antcontrib.logic
Class TryCatchTask
- java.lang.Object
-
- org.apache.tools.ant.ProjectComponent
-
- org.apache.tools.ant.Task
-
- net.sf.antcontrib.logic.TryCatchTask
-
- All Implemented Interfaces:
java.lang.Cloneable
public class TryCatchTask extends org.apache.tools.ant.Task
A wrapper that lets you run a set of tasks and optionally run a different set of tasks if the first set fails and yet another set after the first one has finished.This mirrors Java's try/catch/finally.
The tasks inside of the required
<try>
element will be run. If one of them should throw aBuildException
several things can happen:- If there is no
<catch>
block, the exception will be passed through to Ant. - If the property attribute has been set, a property of the given name will be set to the message of the exception.
- If the reference attribute has been set, a reference of the given id will be created and point to the exception object.
- If there is a
<catch>
block, the tasks nested into it will be run.
If a
<finally>
block is present, the task nested into it will be run, no matter whether the first tasks have thrown an exception or not.Attributes:
Name Description Required property Name of a property that will receive the message of the exception that has been caught (if any) No reference Id of a reference that will point to the exception object that has been caught (if any) No Use the following task to define the
<trycatch>
task before you use it the first time:<taskdef name="trycatch" classname="net.sf.antcontrib.logic.TryCatchTask" />
Crude Example
<trycatch property="foo" reference="bar"> <try> <fail>Tada!</fail> </try> <catch> <echo>In <catch>.</echo> </catch> <finally> <echo>In <finally>.</echo> </finally> </trycatch> <echo>As property: ${foo}</echo> <property name="baz" refid="bar" /> <echo>From reference: ${baz}</echo>
results in
[trycatch] Caught exception: Tada! [echo] In <catch>. [echo] In <finally>. [echo] As property: Tada! [echo] From reference: Tada!
- Author:
- Stefan Bodewig, Dan Ritchey
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
TryCatchTask.CatchBlock
-
Constructor Summary
Constructors Constructor Description TryCatchTask()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addCatch(TryCatchTask.CatchBlock cb)
void
addFinally(org.apache.tools.ant.taskdefs.Sequential seq)
Adds a nested <finally> block - at most one is allowed.void
addTry(org.apache.tools.ant.taskdefs.Sequential seq)
Adds a nested <try> block - one is required, more is forbidden.void
execute()
The heart of the task.void
setProperty(java.lang.String p)
Sets the property attribute.void
setReference(java.lang.String r)
Sets the reference attribute.-
Methods inherited from class org.apache.tools.ant.Task
bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType
-
-
-
-
Method Detail
-
addTry
public void addTry(org.apache.tools.ant.taskdefs.Sequential seq) throws org.apache.tools.ant.BuildException
Adds a nested <try> block - one is required, more is forbidden.- Throws:
org.apache.tools.ant.BuildException
-
addCatch
public void addCatch(TryCatchTask.CatchBlock cb)
-
addFinally
public void addFinally(org.apache.tools.ant.taskdefs.Sequential seq) throws org.apache.tools.ant.BuildException
Adds a nested <finally> block - at most one is allowed.- Throws:
org.apache.tools.ant.BuildException
-
setProperty
public void setProperty(java.lang.String p)
Sets the property attribute.
-
setReference
public void setReference(java.lang.String r)
Sets the reference attribute.
-
execute
public void execute() throws org.apache.tools.ant.BuildException
The heart of the task.- Overrides:
execute
in classorg.apache.tools.ant.Task
- Throws:
org.apache.tools.ant.BuildException
-
-