net.sf.antcontrib.logic

Class TryCatchTask

public class TryCatchTask extends 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 a org.apache.tools.ant.BuildException BuildException several things can happen:

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 &lt;catch&gt;.</echo>
   </catch>

   <finally>
     <echo>In &lt;finally&gt;.</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
static classTryCatchTask.CatchBlock
Method Summary
voidaddCatch(TryCatchTask.CatchBlock cb)
voidaddFinally(Sequential seq)
Adds a nested <finally> block - at most one is allowed.
voidaddTry(Sequential seq)
Adds a nested <try> block - one is required, more is forbidden.
voidexecute()
The heart of the task.
voidsetProperty(String p)
Sets the property attribute.
voidsetReference(String r)
Sets the reference attribute.

Method Detail

addCatch

public void addCatch(TryCatchTask.CatchBlock cb)

addFinally

public void addFinally(Sequential seq)
Adds a nested <finally> block - at most one is allowed.

addTry

public void addTry(Sequential seq)
Adds a nested <try> block - one is required, more is forbidden.

execute

public void execute()
The heart of the task.

setProperty

public void setProperty(String p)
Sets the property attribute.

setReference

public void setReference(String r)
Sets the reference attribute.