I was recently debugging a stored procedure and could not easily identify the underlying reason for why it was failing.
It had a standard exit handler catch-all for SQLEXCEPTION, which was:
DECLARE EXIT HANDLER FOR SQLEXCEPTION
When there was an error, it didn't really output anything useful.
As of MySQL 5.5, there is RESIGNAL:
"RESIGNAL passes on the error condition information that is available during execution of a condition handler within a compound statement inside a stored procedure or function, trigger, or event."