Three Rules for Effective Exception Handling