Understanding C Exception Handling Best Practices