Advanced Programming in Java Sadegh Aliakbary Sharif University
Advanced Programming in Java Sadegh Aliakbary Sharif University of Technology Fall 2010
Agenda �Exception Handling Fall 2010 Sharif University of Technology 2
Watch This Method public static Integer get. Year(String day){ String year. String = day. substring(0, 4); int year = Integer. parse. Int(year. String); return year; } public static void main(String[] args) { String day = "2010/11/29"; Integer year = get. Year(day); System. out. println(year); } Fall 2010 Sharif University of Technology 3
Exceptions �What is wrong with it? �What if day parameter is not a day representation? �day = “salam!” �What if day parameter is malformed? �Day = “ 29 Nov 2010” �What if day parameter is null? �This occasions are called Exception Fall 2010 Sharif University of Technology 4
Handling Exceptions �What to do with exceptions? �Exit the program �Printing the error on console �Returning a special value �e. g. -1 Fall 2010 Sharif University of Technology 5
Important Note �Sometimes the method can’t handle the exception effectively �What should a method do when an exception occurs? �Exit the program? �Suppose you are in a desktop application � Excel, Word, a game, … �Print on console? �edu site �A game Fall 2010 Sharif University of Technology 6
Returning a Special Value �We can return a special value to report an exception �E. g. �return null; �return -1; �return 0; �return “”; �Why not? Fall 2010 Sharif University of Technology 7
Why not? �There is no return value �Return type : void �There is no special value �There are many exceptions �Ambiguity �Need for documentation �Combination of program code and exception code Fall 2010 Sharif University of Technology 8
There is no special value public static int minimum(int[] nums ){ int m = Integer. MAX_VALUE; for (int i : nums) { m = Math. min(m, i); } return m; } int[] array = {1, 2, -1}; int minimum. Found = minimum(array); Fall 2010 Sharif University of Technology 9
Exception Handling �Exception Handling is a framework for handling exceptions �It simplifies code �Separates business code and exception code Fall 2010 Sharif University of Technology 10
What is an Exception? �Exceptional event �Error that occurs during runtime �Cause normal program flow to be disrupted �Examples �? �Divide by zero errors �Accessing the elements of an array beyond its range �Invalid input �Hard disk crash �Opening a non-existent file �Heap memory exhausted Fall 2010 Sharif University of Technology 11
Default Exception Handling �Provided by Java runtime �Prints out exception description �Prints the stack trace �Hierarchy of methods where the exception occurred �Causes the program to terminate Fall 2010 Sharif University of Technology 12
Example class Div. By. Zero { public static void main(String a[]) { System. out. println(3/0); } } Exception in thread "main" java. lang. Arithmetic. Exception: / by zero at exception. Test 2. main(Test 2. java: 19) Fall 2010 Sharif University of Technology 13
What Happens When an Exception Occurs? �When an exception occurs within a method �The method creates an exception object �And hands it off to the runtime system �This job is called “throwing an exception” �Exception object contains �information about the error �its type �the state of the program when the error occurred Fall 2010 Sharif University of Technology 14
What Happens When an Exception Occurs (2)? �The runtime system searches the call stack �For a method that contains an exception handler �When an appropriate handler is found �The runtime system passes the exception to the handler �The exception handler catches the exception �What if the runtime system can not find an exception handler? �Uses the default exception handler Fall 2010 Sharif University of Technology 15
Fall 2010 Sharif University of Technology 16
Fall 2010 Sharif University of Technology 17
Exception Handling in Java public static Integer get. Year(String day) { String year. String = day. substring(0, 4); int year = Integer. parse. Int(year. String); return year; } public static void main(String[] args) { Scanner scanner = new Scanner(System. in); System. out. print("Enter a well-formed date: "); String date = scanner. next(); Integer year = get. Year(date); System. out. println(year); } Fall 2010 Sharif University of Technology 18
get. Year() public static Integer get. Year(String day) throws Exception { if (day == null) throw new Exception("null value"); if (day. length() == 0) throw new Exception("empty value"); if (!matches. Date. Format(day)) throw new Exception("malformed value"); String year. String = day. substring(0, 4); int year = Integer. parse. Int(year. String); return year; } private static boolean matches. Date. Format(String input) { return input. matches("\d\d/\d\d"); } Fall 2010 Sharif University of Technology 19
main() public static void main(String[] args) { Scanner scanner = new Scanner(System. in); boolean ok = false; while (ok == false) { System. out. print("Enter a well-formed date: "); String date = scanner. next(); try { Integer year = get. Year(date); System. out. println(year); ok = true; } catch (Exception e) { System. out. println(e. get. Message()); } } } Fall 2010 Sharif University of Technology 20
Exception Handling Keywords �throws a new exception �throws �Declares exception throw �try �Start a block with exception handling �catch �Catch the exception Fall 2010 Sharif University of Technology 21
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 2010 Sharif University of Technology 22
Fall 2010 Sharif University of Technology 23
References http: //www. javapassion. com/javase/javaexceptions. pdf Fall 2010 Sharif University of Technology 24
- Slides: 24