Understanding C Exception Handling