16.2. Programming Techniques for Exception Handling