Return Inside Finally Block

Abstract
Returning from inside a finally block will cause exceptions to be lost.

Description
A return statement inside a finally block will cause any exception that might be thrown in the try block to be discarded.

Examples
In the following code excerpt, the IllegalArgumentException will never be delivered to the caller. The finally block will cause the exception to be discarded.

try { ...	 throw IllegalArgumentException; }	finally { return r;	}

Related Countermeasures
Error Handling