title: Why is @AfterReturning only executed after @AfterThrowing on exception?
body: <p>I have the following:</p>
  
  <pre><code>@AfterReturning("executionOfTrustedAnnotatedMethod()")
  public void afterReturningFromTrustedMethodExecution() { ... }
  
  @AfterThrowing(pointcut = "executionOfTrustedAnnotatedMethod()")
  public void afterThrowingByExecutionOfTrustedAnnotatedMethod() { ... }
  </code></pre>
  
  <p>And Im observing this behaviour which does not make sense to me:</p>
  
  <ul>
  <li>If the method captured by this pointcut does not throw an exception, @AfterReturning is executed</li>
  <li>If the method throws an exception, @AfterReturning is only executed if @AfterThrowing exists and is executed first</li>
  </ul>
  
  <p>What I am trying to accomplish is to run some code at the end of the execution of a method regardless if there was an exception thrown or not. But now this code runs twice (if I have both afterReturning and afterThrowing) or not at all (if I only have afterReturning) if there is an exception thrown.</p>
  
  <p>Any suggestions?</p>
  
  <p>Thanks,
  Piotr</p>