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