120 likes | 221 Views
17 Exception handling. CE00858-1: Fundamental Programming Techniques. September 14. 1. Objectives. In this session, we will: introduce exceptions consider when exceptions occur write code to handle exceptions compare checked and unchecked exceptions. September 14. FPT Week 5 Session 1.
E N D
17 Exception handling CE00858-1: Fundamental Programming Techniques September 14 17 Exception handling 1
Objectives In this session, we will: • introduce exceptions • consider when exceptions occur • write code to handle exceptions • compare checked and unchecked exceptions September 14 17 Exception handling FPT Week 5 Session 1 2
Exceptions • exceptions are generated when something goes wrong • dividing a number by zero • ArithmeticException • accessing an array element that doesn't exist • ArrayIndexOutOfBoundsException • reading data of the wrong type with a Scanner object • InputMismatchException • opening a data file that doesn’t exist • FileNotFoundException • reading past the end of a file • EOFException 17 Exception handling
Exceptions at run-time • when an exception occurs, the run-time system displays details: • name of exception: • InputMismatchException • location where exception occurred: • stack trace 17 Exception handling
Handling exceptions • can avoid program crash by handling the exception • code that could cause an error is put in a try block • code to handle the exception is put in a catch block • catch block is executed immediately an exception occurs • multiple catch blocks can deal with different exceptions that may occur • optional finally block is executed whether or not exception occurs • the catch block is passed details of the exception that occurred • the toString() method can be used to display information about the exception 17 Exception handling
Exception example – division • program required to: • prompt the user for 2 integers • output the results of dividing the first by the second • analysis: • what data is used? • num1: integer input by user • num2: integer input by user • what operations are performed? • input num1 and num2 • output num1 / num2 • what exceptions might occur? • user may input data of incorrect type • second number may be 0 17 Exception handling
Division.java //program to divide 2 integers import java.util.*; public class Division { public static void main (String [] args) { Scanner kybd = new Scanner(System.in); System.out.println("Enter 2 integers: "); try { int num1 = kybd.nextInt(); int num2 = kybd.nextInt(); int ans = num1 / num2; System.out.println("Answer is: " + ans); } catch (InputMismatchException e) { System.out.println(e.toString()); } catch (ArithmeticException e) { System.out.println(e.toString()); } } } block containing potential problem block executed if problem with input block executed if problem with division 17 Exception handling
Continuing processing example - getNum • sometimes may wish to continue processing after an exception • program to: • prompt user for integer • output error if wrong type • continue until valid data input 17 Exception handling
getNum analysis • what data is used? • num: integer input by user • what operations are performed? • iteration needed to read data until valid input • how many times is loop executed? • loop executed until valid data input • what operations are repeated inside loop? • read data • check for exception • what exceptions might occur? • user may input data of incorrect type 17 Exception handling
GetNum.java import java.util.*; public class GetNum { public static void main (String [] args) { intvalidNum = validateNum(); System.out.println(validNum); } //method to input valid data public static intvalidateNum() { Scanner kybd = new Scanner(System.in); System.out.print("Please enter an integer: "); while (true) { try { int num = kybd.nextInt(); return num; } catch (InputMismatchException e) { System.out.print("Invalid input, try again: "); String invalidInput = kybd.next(); } } } } loop forever return num if valid and finish loop clear input buffer of invalid data 17 Exception handling
Unchecked and checked exceptions • unchecked exceptions: • can be avoided within code • testing bounds before accessing array • preventing division by 0 • checking data type when reading using Scanner • try...catch block not required • checked exceptions: • compiler error if not dealt with in try...catch block • opening non-existent file • reading past end of file 17 Exception handling
Summary In this session we have: • used exceptions and seen when they occur • written code to handle exceptions • looked at the differences between checked and unchecked exceptions In the next session we will: • consider file handling September 14 17 Exception handling 12