190 likes | 208 Views
Learn about exception handling in Java, how to detect and correct program errors, and the use of try-catch-finally blocks. Understand the difference between checked and unchecked exceptions and how to implement a competent exception handler.
E N D
Exceptions cs1043
Program Exceptions • When a program detects an error, what should it do? • Nothing, simply allow the program to fail. • Implement a course of action to correct the error.
Example: • A user enters an incorrect URL into a web browser. • Should the browser crash? • Should the browser request another URL?
Exception Handling • Software is designed to detect and correct most failures. • Detection and correction of an error is known as exception handling.
Java Exceptions • The Java compiler places exceptions into two categories: • Checked exceptions • Unchecked exceptions
Checked Exceptions • The compiler requires the programmer to either: • write a competent exception handler (CEH) for any checked exceptions. - Example: Input-output operations (reading and writing files and data streams). • Throw the exception hoping another method in the calling-tree will be able to handle the exception. This require the throws keyword.
Unchecked Exceptions • Example double z = x / y; The compiler does not require any special action to prevent the division when y=0.
Unchecked Exceptions • The programmer can choose to: • Ignore the exception and hope for the best. • Catch the exception and implement an action to recover from the exception. Note: if the program cannot recover from an exception, the program exits with a fatal exception runtime error.
Unchecked Exception Example double z; if ( y != 0 ) //prevent 0-division z = x / y; else // perform some other action
Checked Exception • Two choices for the programmer: • Throw the exception to the referencing method and hope for recovery. • Catch the exception with a competent exception handler
Java Keywords for Exception Handling • An unchecked exception could use the keyword “throw”. • Checked exceptions can use any of these: • throws • throw • try, catch, & finally
The Competent Exception Handler • The competent exception handler uses a combination of these three keywords: try, catch, and finally. • If the programmer wishes to send the exception to the referencing method, then use the throws keyword.
Syntax for CEH • In order: • try-block – one per CEH • catch-blocks - zero or more per CEH • finally-block – zero or one per CEH
1. CEH try-Block • A CEH must have a try-block • The try-block consists of the try keyword followed by a body of code.
2. CEH catch-Blocks • The try-block is followed by zero or more catch blocks. • Each catch block will perform an action based on the exception type
3. CEH finally-Block • The finally-block is required if there are zero catch blocks. • The finally-block is optional if there is at least one catch-block.
CEH • The CEH can be nested just like other control structures.