net.sf.antcontrib.logic
Class TryCatchTask


java.lang.Object

  extended by org.apache.tools.ant.ProjectComponent

      extended by org.apache.tools.ant.Task

          extended by net.sf.antcontrib.logic.TryCatchTask


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 a 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 class TryCatchTask.CatchBlock
           
 
Field Summary
 
Fields inherited from class org.apache.tools.ant.Task
description, location, target, taskName, taskType, wrapper
 
Fields inherited from class org.apache.tools.ant.ProjectComponent
project
 
Constructor Summary
TryCatchTask()
           
 
Method Summary
 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
getDescription, getLocation, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, maybeConfigure, perform, reconfigure, setDescription, setLocation, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType
 
Methods inherited from class org.apache.tools.ant.ProjectComponent
getProject, setProject
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TryCatchTask


public TryCatchTask()
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 class org.apache.tools.ant.Task
Throws:
org.apache.tools.ant.BuildException