250 likes | 392 Vues
This agenda presents a detailed overview of exception handling in Java, specifically during the Fall 2010 semester at Sharif University of Technology. It covers key concepts such as the significance of handling exceptions, various types of exceptions, and practical examples of how to implement exception handling in Java methods. Learn about the use of special return values, the implications of unhandled exceptions, and how Java's default exception handling works. This guide is essential for programmers seeking to enhance their understanding of error management in Java applications.
E N D
Advanced Programming in Java SadeghAliakbary Sharif University of Technology Fall 2010
Agenda • Exception Handling Sharif University of Technology
Watch This Method publicstatic Integer getYear(String day){ String yearString = day.substring(0,4); int year = Integer.parseInt(yearString); return year; } publicstaticvoid main(String[] args) { String day = "2010/11/29"; Integer year = getYear(day); System.out.println(year); } Sharif University of Technology
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 Sharif University of Technology
Handling Exceptions • What to do with exceptions? • Exit the program • Printing the error on console • Returning a special value • e.g. -1 Sharif University of Technology
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 Sharif University of Technology
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? Sharif University of Technology
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 Sharif University of Technology
There is no special value publicstaticint minimum(int[] nums ){ int m = Integer.MAX_VALUE; for (inti : nums) { m = Math.min(m, i); } return m; } int[] array = {1,2,-1}; intminimumFound = minimum(array); Sharif University of Technology
Exception Handling • Exception Handling is a framework for handling exceptions • It simplifies code • Separates business code and exception code Sharif University of Technology
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 Sharif University of Technology
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 Sharif University of Technology
Example classDivByZero { publicstaticvoid main(String a[]) { System.out.println(3/0); } } Exception in thread "main" java.lang.ArithmeticException: / by zero at exception.Test2.main(Test2.java:19) Sharif University of Technology
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 Sharif University of Technology
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 Sharif University of Technology
Exception Handling in Java publicstatic Integer getYear(String day) { String yearString = day.substring(0, 4); int year = Integer.parseInt(yearString); return year; } publicstaticvoid main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter a well-formed date: "); String date = scanner.next(); Integer year = getYear(date); System.out.println(year); } Sharif University of Technology
getYear() publicstatic Integer getYear(String day) throws Exception { if (day == null) thrownew Exception("null value"); if (day.length() == 0) thrownew Exception("empty value"); if (!matchesDateFormat(day)) thrownew Exception("malformed value"); String yearString = day.substring(0, 4); int year = Integer.parseInt(yearString); return year; } privatestaticbooleanmatchesDateFormat(String input) { returninput.matches("\\d\\d\\d\\d/\\d\\d/\\d\\d"); } Sharif University of Technology
main() publicstaticvoid 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 = getYear(date); System.out.println(year); ok = true; } catch (Exception e) { System.out.println(e.getMessage()); } } } Sharif University of Technology
Exception Handling Keywords • throw • throws a new exception • throws • Declares exception throw • try • Start a block with exception handling • catch • Catch the exception Sharif University of Technology
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 Sharif University of Technology
References http://www.javapassion.com/javase/javaexceptions.pdf Sharif University of Technology