Best Practices for Using Try and Catch in Java