[go: up one dir, main page]

0% found this document useful (0 votes)
89 views28 pages

CMP2004 Advanced Programming: Lecture 6 Exception Handling

This document discusses exception handling in Java programs. It defines what exceptions are, how they are declared, thrown, and caught. It differentiates between checked and unchecked exceptions, and how each must be handled. Finally, it provides guidance on writing custom exception classes by subclassing the Exception or RuntimeException classes and including the necessary constructors.

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 PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
89 views28 pages

CMP2004 Advanced Programming: Lecture 6 Exception Handling

This document discusses exception handling in Java programs. It defines what exceptions are, how they are declared, thrown, and caught. It differentiates between checked and unchecked exceptions, and how each must be handled. Finally, it provides guidance on writing custom exception classes by subclassing the Exception or RuntimeException classes and including the necessary constructors.

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 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