0% found this document useful (0 votes)
33 views

CMP2004 Advanced Programming: Lecture 6 Exception Handling

This document discusses exception handling in Java programs. It defines exceptions as events that disrupt normal program flow, such as divide-by-zero errors. Exception handling involves declaring exceptions, throwing exceptions when errors occur, and catching exceptions using try-catch blocks. Finally blocks always execute to clean up resources regardless of exceptions. Checked exceptions must be caught or declared as thrown, while unchecked exceptions do not require handling. The document provides examples of exception terminology, syntax, and writing custom exceptions.

Uploaded by

Tarif Cemay
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views

CMP2004 Advanced Programming: Lecture 6 Exception Handling

This document discusses exception handling in Java programs. It defines exceptions as events that disrupt normal program flow, such as divide-by-zero errors. Exception handling involves declaring exceptions, throwing exceptions when errors occur, and catching exceptions using try-catch blocks. Finally blocks always execute to clean up resources regardless of exceptions. Checked exceptions must be caught or declared as thrown, while unchecked exceptions do not require handling. The document provides examples of exception terminology, syntax, and writing custom exceptions.

Uploaded by

Tarif Cemay
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 28

CMP2004

Advanced
Programming
LECTURE 6 EXCEPTION HANDLING
Errors in Programs
Golden rules of Programming
 Errors occur in all software programs

How to deal with errors


 Try to minimize their occurrence (bug checking)
 Data validation (prevent invalid data)
 Handle them as they occur

Errors can be dealt with at place error occurs


 Easy to see if proper error checking implemented
 Harder to read application itself and see how code works
Error handling (old way)
if (file exists) {
open file;
while (there is more records to be processed) {
if (no IO errors) {
process the file record
}
else {
handle the errors
}
}
if (file is opened)
close the file;
}
else {
report the file does not exist;
}
Sample Code
public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner scanner = new Scanner(System.in);

System.out.print("Please enter an integer numerator: ");


int numerator = scanner.nextInt();

System.out.print("Please enter an integer denominator: ");

int denominator = scanner.nextInt();

int result = numerator / denominator;


System.out.printf("Result: %d / %d = %d%n", numerator, denominator,
result);
}
Output
Output
Output
Sample Code (Fix it)
...
int denominator = scanner.nextInt();
if(denominator!=0) {
int result = numerator / denominator;
System.out.printf("%nResult: %d / %d = %d%n",
numerator, denominator,
result);
}
else {
System.out.print("denominator must be nonzero ");
}
...
What is an Exception?
Definition: An exception or exceptional event is an event that occurs
during the execution of a program that disrupts the normal flow of
instructions
The following will cause exceptions
 Accessing an out-of-bounds array element
 Writing into a read-only file
 Trying to read beyond the end of a file
 Sending illegal arguments to a method
 Performing illegal arithmetic (e.g divide by 0)
 Hardware failures…
Exception Terminology
When an exception occurs, we say it was thrown or raised
When an exception is dealt with, we say it is handled or caught
The block of code that deals with exceptions is known as an exception
handler
Exception Handling
Makes clear, robust, fault-tolerant programs
Separates error handling code from "main line" of program
Deals with synchronous errors (i.e., Divide by zero)
Used when system can recover from error
Exception handler(recovery procedure)
 Typically used when error dealt with in different place than where it occurred
Exception Rules in JAVA
1. Exceptions must be Declared
public void methodReadFile(File source) throws FileNotFoundException;

2. Exceptions must be Handled


try {
methodReadFile (new File("test.in"));
// do something if no exception ...
// you main logic here in the try-block
} catch (FileNotFoundException ex) {
// error handling separated from the main logic
}
Exception Handling
Operations
Java’s exception handling consists of three operations:
 Declaring exceptions;
 Throwing an exception; and
 Catching an exception.
Declaring exceptions
A Java method must declare in its signature the types of exception it
may "throw" from its body, via the keyword "throws"

public void methodD() throws XException, YException


{
// method body throw XException and YException
}
Throwing an Exception
In case of an error create an appropriate Exception object and throw it

public void methodD() throws XException, YException { // method's signature


// method's body
...
...
// XException occurs
if ( ... )
throw new XException(...); // construct an XException object and
throw
...
// YException occurs
if ( ... )
throw new YException(...); // construct an YException object and
throw
...
}
Throwing an Exception
The throw statement requires a single argument: a throwable object
Throwable objects are instances of any subclass of the Throwable class
 Include all types of errors and exceptions
 Check the API for a full listing of throwable objects
Catching an Exception
try-catch block:
Enclose code that may generate an error in try block
Follow with one or more catch blocks
 Each catch block has an exception handler
 If exception occurs and matches parameter in catch block, code in catch
block executed
 If no exception thrown, exception handlers skipped and control resumes
after catch blocks
Format

try
{
// code that might throw exception
}
catch ([Type of Exception] e) {
// what to do if exception is thrown
}
Handling Multiple Exceptions
Handling multiple possible exceptions by multiple successive catch
blocks

try {
// code that might throw multiple
// exceptions
}
catch (XException e) {
// handle XException
}
catch (YException e2) {
// handle YException
}
Finally Block
The optional finally block at the end of the try-catch block
The finally block provides a mechanism to clean up regardless of what
happens within the try block
 Can be used to close files or to release other system resources
Finally Block
try
{
// code that might throw exception
}
catch ([Type of Exception] e) {
// what to do if exception is thrown
}
finally
{
// statements here always get executed
// regardless of code in the try block
}
Checked/Unchecked
Exceptions
Unchecked exceptions or runtime exceptions occur within the JVM
Examples of unchecked exceptions
 arithmetic exceptions (dividing by zero)
 pointer exceptions (trying to access an object’s members through a null
reference)
 indexing exceptions (trying to access an array element with an index that is
too large or too small)
 etc.

A method does not have to catch or specify that it throws unchecked


exceptions, although it may
Checked/Unchecked
Exceptions
Checked exceptions or compile time exceptions exceptions that occur
in
code outside of the Java runtime system
For example, exceptions that occur during I/O (covered next lecture)
are
checked exceptions
The compiler ensures that checked exceptions are caught or are
specified
to be thrown (using the throws keyword)
Handling Checked Exceptions
Every method must catch checked exceptions OR specify that it
may throw them (using the throws keyword)
Handling Checked Exceptions
void readFile(String filename) {
try {
FileReader reader = new FileReader("myfile.txt");
// read from file . . .
} catch (FileNotFoundException e) {
System.out.println("file was not found");
}
}

void readFile(String filename) throws FileNotFoundException {


FileReader reader = new FileReader("myfile.txt");
// read from file . . .
}
Writing Your Own Exceptions
There are at least 2 types of exception constructors:
 Default constructor: No arguments

NullPointerException e = new NullPointerException();


Constructor that has a detailed message: Has a single String argument
IllegalArgumentExceptione e =
new IllegalArgumentException("Number must be positive");
Writing Your Own Exceptions
Your own exceptions must be a subclass of the Exception class and have
at least the two standard constructors

public class MyCheckedException extends IOException {


public MyCheckedException() { }
public MyCheckedException(String m) {
super(m);
}
}
public class MyUncheckedException extends RuntimeException {
public MyUncheckedException() {}
public MyUncheckedException(String m) {
super(m);
}
}

You might also like