ode"><pre class="prettyprint">public void TransferFunds(Account destination, decimal amount)
{
  if(balance-amount &lt; minimumBalance)
    throw new InsufficientFundsException();

  destination.Deposit(amount);

  Withdraw(amount);
}</pre>
</div>

<p>What if the Withdraw() method throws another exception? Should we execute a compensating transaction in the catch block or rely on our transaction manager to restore the state of the objects? We need to answer those questions at some point, but not now; but wh