Download presentation
Presentation is loading. Please wait.
Published byEddie Howison Modified over 9 years ago
1
Sadegh Aliakbary Sharif University of Technology Fall 2010
2
Agenda Exception Handling Fall 2010Sharif University of Technology2
3
Review Fall 2010Sharif University of Technology3
4
Benefits of Exception Handling Framework Separating Error-Handling code from “regular” business logic code Propagating errors up the call stack Grouping and differentiating error types Fall 2010Sharif University of Technology4
5
Separating Error-Handling Code Consider pseudocode method It reads an entire file into memory readFile { open the file; determine its size; allocate that much memory; read the file into memory; close the file; } Fall 2010Sharif University of Technology5
6
Traditional Programming Fall 2010Sharif University of Technology6
7
With Exception Handling Framework Fall 2010Sharif University of Technology7
8
Note You should still write code for Detecting, Reporting and Handling exceptions Exception handling framework is not responsible for these jobs! It only helps you organize the work more effectively Fall 2010Sharif University of Technology8
9
Propagating Errors Up the Call Stack Traditional approach Each method should explicitly forward the exception Use a special return code Using return type for reporting exceptions Smells bad! New approach Automatic Beautiful! Fall 2010Sharif University of Technology9
10
Grouping and Differentiating Error Types All exceptions thrown within a program are objects The grouping or categorizing of exceptions is a natural outcome of the class hierarchy Fall 2010Sharif University of Technology10
11
Fall 2010Sharif University of Technology11
12
Example2 class MultipleCatch { public static void main(String args[]) { try { int den = Integer.parseInt(args[0]); System.out.println(3/den); } catch (ArithmeticException exc) { System.out.println(“Divisor was 0.”); } catch (ArrayIndexOutOfBoundsException exc2) { System.out.println(“Missing argument.”); } System.out.println(“After exception.”); } Fall 2010Sharif University of Technology12
13
Nested Tries class NestedTryDemo { public static void main(String args[]){ try { int a = Integer.parseInt(args[0]); try { int b = Integer.parseInt(args[1]); System.out.println(a/b); } catch (ArithmeticException e) { System.out.println(“Div by zero error!"); } } catch (ArrayIndexOutOfBoundsException) { System.out.println(“Need 2 parameters!"); } Fall 2010Sharif University of Technology13
14
Bad Use of Exceptions Don’t Use Exception instead of If-else Use exceptions for exceptions! Fall 2010Sharif University of Technology14
15
Writing Your Own Exceptions your classes should extend Exception class Only Exception Subclasses could be thrown and caught Steps to follow Create a class that extends the RuntimeException or the Exception class Customize the class Members and constructors may be added to the class Fall 2010Sharif University of Technology15
16
Example class HateStringExp extends Exception { /* some code */ } String input = "invalid input"; try { if (input.equals("invalid input")) { throw new HateStringExp(); } System.out.println("Accept string."); } catch (HateStringExp e) { System.out.println("Hate string!”); } Fall 2010Sharif University of Technology16
17
Finally try { //.. } catch (ExceptionType e) { //… }... } finally { } Contains the code for cleaning up after a try or a catch Fall 2010Sharif University of Technology17
18
Finally (2) Block of code is always executed Despite of different scenarios: Normal completion Forced exit occurs using a return, a continue or a break statement Caught exception thrown Exception was thrown and caught in the method Uncaught exception thrown Exception thrown was not specified in any catch block in the method Fall 2010Sharif University of Technology18
19
Fall 2010Sharif University of Technology19
20
Unchecked Exceptions private static void function(String[] args) { int den = Integer.parseInt(args[0]); System.out.println(3 / den); } public static void main(String[] args) { function(args); } function() may throw exceptions But it has not declared it with throws keyword Why? Fall 2010Sharif University of Technology20
21
Checked and Unchecked Exceptions Checked exception Java compiler checks the program should catch or list the occurring exception If not, compiler error will occur Unchecked exceptions Not subject to compile-time checking for exception handling Built-in unchecked exception classes Error RuntimeException Their subclasses Fall 2010Sharif University of Technology21
22
Exception Class Hierarchy Fall 2010Sharif University of Technology22
23
Exception Classes and Hierarchy Multiple catches should be ordered from subclass to superclass class MultipleCatchError { public static void main(String args[]){ try { int a = Integer.parseInt(args [0]); int b = Integer.parseInt(args [1]); System.out.println(a/b); } catch (ArrayIndexOutOfBoundsException e) { //.. } catch (Exception ex) { //.. } Fall 2010Sharif University of Technology23
24
Further Reading Assertions assert name!=null; Fall 2010Sharif University of Technology24
25
Fall 2010Sharif University of Technology25
26
References http://www.javapassion.com/javase/javaexceptions.pdf Fall 2010Sharif University of Technology26
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.