<p>
Throwing an exception from within a finally block will mask any exception which was previously thrown in the <code>try</code> or <code>catch</code> block.
The masked's exception message and stack trace will be lost.
</p>

<p>The following code:</p>

<pre>
try {
  /* some work which end up throwing an exception */
  throw new IllegalArgumentException();
} finally {
  /* clean up */
  throw new RuntimeException();                          // Non-Compliant - will mask the IllegalArgumentException
}
</pre>

<p>should be refactored into:</p>

<pre>
try {
  /* some work which end up throwing an exception */
  throw new IllegalArgumentException();
} finally {
  /* clean up */                                         // Compliant
}
</pre>