Exceptions Handling the unexpected. RHS – SWC 2 The Real World So far, most of our code has been somewhat näive We have assumed that nothing goes wrong…

Slides:



Advertisements
Similar presentations
Topics Introduction Types of Errors Exceptions Exception Handling
Advertisements

CMSC 202 Exceptions 2 nd Lecture. Aug 7, Methods may fail for multiple reasons public class BankAccount { private int balance = 0, minDeposit =
CSM-Java Programming-I Spring,2005 Exceptions Lesson - 7.
Exception Handling Chapter 15 2 What You Will Learn Use try, throw, catch to watch for indicate exceptions handle How to process exceptions and failures.
Errors and Exceptions The objectives of this chapter are: To understand the exception handling mechanism defined in Java To explain the difference between.
COMP 121 Week 5: Exceptions and Exception Handling.
© 2004 Pearson Addison-Wesley. All rights reserved10-1 Chapter 10 : Exceptions Intermediate Java Programming Summer 2007.
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Chapter 13 Exception Handling.
Objectives In this chapter you will: Learn what an exception is Learn how to handle exceptions within a program See how a try / catch block is used to.
Exceptions and Exception Handling Carl Alphonce CSE116 March 9, 2007.
© The McGraw-Hill Companies, 2006 Chapter 15. © The McGraw-Hill Companies, 2006 Exceptions an exception is an event that occurs during the life of a program.
When you use an input or output file that does not exist, what will happen? −The compiler insists that we tell it what the program should do in such case.
Chapter 11.  Data is often stored in files such as a text file  We need to read that data into our program  Simplest mechanism  Scanner class  First.
COP 2800 Lake Sumter State College Mark Wilson, Instructor.
Liang, Introduction to Java Programming, Fifth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 17 Exceptions and.
Exceptions Used to signal errors or unexpected situations to calling code Should not be used for problems that can be dealt with reasonably within local.
Exceptions in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
1 Exception Handling (in a nutshell). 2 Motivations When a program runs into a runtime error, the program terminates abnormally. How can you handle the.
Chapter 11: Handling Exceptions and Events J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Fourth.
Advanced Java Course Exception Handling. Throwables Class Throwable has two subclasses: –Error So bad that you never even think about trying to catch.
Introduction to Java Chapter 11 Error Handling. Motivations When a program runs into a runtime error, the program terminates abnormally. How can you handle.
Exceptions. Many problems in code are handled when the code is compiled, but not all Some are impossible to catch before the program is run  Must run.
CS1101: Programming Methodology Aaron Tan.
Java Software Solutions Foundations of Program Design Sixth Edition
What is an exception? An exception is: – an event that interrupts the normal processing of the program. –an error condition that violates the semantic.
Preventing and Correcting Errors
June 14, 2001Exception Handling in Java1 Richard S. Huntrods June 14, 2001 University of Calgary.
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 18 Exception Handling.
Object Oriented Programming
06 Exception Handling. 2 Contents What is an Exception? Exception-handling in Java Types of Exceptions Exception Hierarchy try-catch()-finally Statement.
Java Programming Exceptions Handling. Topics: Learn about exceptions Try code and catch Exceptions Use the Exception getMessage() method Throw and catch.
CIS 270—Application Development II Chapter 13—Exception Handling.
Chapter 12: Exception Handling
Slides Credit Umair Javed LUMS Web Application Development.
COMP Exception Handling Yi Hong June 10, 2015.
Chapter 14: Exception Handling. Objectives In this chapter, you will: – Learn what an exception is – Learn how to handle exceptions within a program –
Exceptions CSC 171 FALL 2004 LECTURE 24. READING Read Horstmann Chapter 14 This course covered Horstmann Chapters
Exception Handling Unit-6. Introduction An exception is a problem that arises during the execution of a program. An exception can occur for many different.
Exceptions in Java. Exceptions An exception is an object describing an unusual or erroneous situation Exceptions are thrown by a program, and may be caught.
BIO Java 1 Exception Handling Aborting program not always a good idea – can’t lose messages – E-commerce: must ensure correct handling of private.
Data Structures Using Java1 Chapter 2 Inheritance and Exception Handling.
Chapter 12 Handling Exceptions and Events. Chapter Objectives Learn what an exception is Become aware of the hierarchy of exception classes Learn about.
Sheet 3 HANDLING EXCEPTIONS Advanced Programming using Java By Nora Alaqeel.
Java Programming: From Problem Analysis to Program Design, 4e Chapter 11 Handling Exceptions and Events.
Exceptions and Assertions Chapter 15 – CSCI 1302.
Exception Handling in Java Topics: Introduction Errors and Error handling Exceptions Types of Exceptions Coding Exceptions Summary.
Exceptions in Java. What is an exception? An exception is an error condition that changes the normal flow of control in a program Exceptions in Java separates.
Exception-Handling Fundamentals  A Java exception is an object that describes an exceptional (that is, error) condition that has occurred in a piece of.
1 Exceptions. 2 Syntax Errors, Runtime Errors, and Logic Errors syntax errors, runtime errors, and logic errors You learned that there are three categories.
COP3502 Programming Fundamentals for CIS Majors 1 Instructor: Parisa Rashidi.
Exceptions Lecture 11 COMP 401, Fall /25/2014.
Lecture10 Exception Handling Jaeki Song. Introduction Categories of errors –Compilation error The rules of language have not been followed –Runtime error.
And other languages…. must remember to check return value OR, must pass label/exception handler to every function Caller Function return status Caller.
Exception. Agenda Exception. Handling Exceptions. The finally Clause.
Throw, Throws & Try-Catch Statements Explanations and Pictures from: Reference:
ECE122 L23: Exceptions December 6, 2007 ECE 122 Engineering Problem Solving with Java Lecture 24 Exceptions.
1 Handling Errors and Exceptions Chapter 6. 2 Objectives You will be able to: 1. Use the try, catch, and finally statements to handle exceptions. 2. Raise.
Lecture 5: Exception Handling and Text File I/O Michael Hsu CSULA.
Lec.11 (Chapter 11) Exception Jiang (Jen) ZHENG July 13 th, 2005.
Java Exceptions a quick review….
Chapter 13 Exception Handling
Chapter 12 Exception Handling and Text IO
Exceptions Handling the unexpected
Exception Handling and Reading / Writing Files
Exception Handling.
Chapter 13 Exception Handling
Lecture 11 Objectives Learn what an exception is.
CMSC 202 Exceptions 2nd Lecture.
Exception Handling.
Java Programming: From Problem Analysis to Program Design, 4e
Presentation transcript:

Exceptions Handling the unexpected

RHS – SWC 2 The Real World So far, most of our code has been somewhat näive We have assumed that nothing goes wrong… –User enters correct input –We never address outside the boundaries of an array –…and so on

RHS – SWC 3 The Real World Of course, the real world works differently public class BankAccount { public void withdraw(double amount) { if (amount > balance) // Now what? }... }

RHS – SWC 4 The Real World Possible actions depend on our interpre- tation of this situation –Legal – just do business logic –Illegal, and we know what to do – perhaps just do nothing –Illegal, and we do not know what to do! Error detection and error handling are often separated in code!

RHS – SWC 5 The Real World Problem: Can become very complex to ”drag” error handling code around in code for business logic Error-handling may be application-specific –GUI-application: Pop-up window –Other: Write to a log file Business logic code should not choose strategy for error handling!

RHS – SWC 6 The Real World Next problem: Error handling code is often very ”far away” from error detction main askUserdoActionmakeWithdrawwithdraw Error detected Error handling ?

RHS – SWC 7 Exceptions The mechanism for crossing the gap of method calls is exceptions –An exception in itself is ”just another class” –We can create exception objects just as we can create other objects –An exception object contains information about the type of error which occurred –Java contains several built-in exception classes, forming an inheritance hierarchy

RHS – SWC 8 Throwing and catching Exception can be thrown and catched What does that mean!? A very different flow than usual method calls An exception is thrown up through the chain of method calls

RHS – SWC 9 Throwing and catching main askUserdoActionmakeWithdrawwithdraw Error detected – throw! Who will catch the exception?

RHS – SWC 10 Throwing and catching A throw can look like this in Java: public void withdraw(double amount) { if (amount > balance) { IllegalArgumentException ex = new IllegalArgumentException(”...”); throw ex; } balance = balance – amount; } NOTE!

RHS – SWC 11 Throwing and catching An exception is now thrown; this changes the flow of code immediately! Remaining code in the method throwing the exception is not executed Somebody must catch the exception In order to catch the exception, we must write an exception handler

RHS – SWC 12 Throwing and catching General exception handler structure: try { // Code which may throw an exception... } catch (ExceptionType ex) { // Proper handling of exception... }

RHS – SWC 13 Throwing and catching try { myAccount.withdraw(1000); myAccount.getTransactions();... } catch (IllegalArgumentException ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); }

RHS – SWC 14 Throwing and catching Things to note: –Error detection (throw) and error handling (try/catch) is usually not in the same method –The catch statement only catches exceptions of the specified type –Information about the error is found implicitly – by the type of the exception – and explicitly from e.g the text stored in the object

RHS – SWC 15 Throwing and catching Throw early, catch late! If you cannot fix a pro- blem correctly, throw an exception Only catch an exception if you really know how to fix the problem

RHS – SWC 16 Throwing and catching try { myAccount.withdraw(1000); myAccount.getTransactions();... } catch (Exception ex) { // do nothing... } Tempting, but bad…!

RHS – SWC 17 The finally Clause Sometimes we need to execute some specific code after an exception occurs Typically ”clean-up” code – close a file connection, a database connection, etc. Where do we put this code…? –In exception handlers? Difficult, who actually catches the exception… –In a finally clause!

RHS – SWC 18 The finally Clause PrintWriter out = new PrintWriter(filename);... try { writeData(out); } finally { // This code will always be executed, // even if the above code throws an exception out.close(); }

RHS – SWC 19 The finally Clause The code in the finally clause is guaran- teed to be executed, in one of these ways: –After completing the last statement in the try block –After completing the last statement in a catch clause, if an exception is caught –When an exception was throw in the try block and not caught

RHS – SWC 20 The finally Clause try { } catch { } finally { } try { try { } finally { } catch { } GOOD NOT SO GOOD

RHS – SWC 21 Checked and Unchecked How do I know what exceptions some piece of code can throw…? Difficult to code a method correctly without this knowledge Two types of exceptions exist –Checked exception –Unchecked exception

RHS – SWC 22 Checked and Unchecked Checked exception –Used for problems beyond the control of the programmer –Corrupted file, network problems, etc.. –Compiler insists that you explicitly decide what to do about it Option 1: Re-throw the exception Option 2: Handle the exception, using a catch clause matching the exception

RHS – SWC 23 Checked and Unchecked // Suppose draw() can throw DrawException draw(Figure f); // Compiler will not like this! public void drawOne(Figure f) { getScreen().draw(f); }

RHS – SWC 24 Checked and Unchecked // Option 1: Re-throw the exception // (i.e. do nothing…) public void drawOne(Figure f) throws DrawException { getScreen().draw(f); }

RHS – SWC 25 Checked and Unchecked // Option 2: Handle the exception public void drawOne(Figure f) { try { getScreen().draw(f); } catch (DrawException de) { // Code for handling the problem }

RHS – SWC 26 Checked and Unchecked drawdrawOne Option 1: drawOne does nothing, so it must annonce that it will (re)throw the exception draw drawOne Option 2: drawOne handles the exception, so it is ”consumed” by drawOne

RHS – SWC 27 Checked and Unchecked Unchecked exception –Used for problems which the programmer should be able to prevent –Null reference, out of bounds reference,… –Why do we have these…? Accidents do happen…! –Unchecked exceptions are not announced

RHS – SWC 28 Making your own exceptions Throw exceptions that are as specific as possible – also in terms of type Many built-in exceptions to choose from Can be appropriate to create your own exceptions Just extend existing class

RHS – SWC 29 Making your own exceptions public class InsufficientFundsException extends RunTimeException { public InsufficientFundsException() {} public InsufficientFundsException(String message) { super(message); }

RHS – SWC 30 Exceptions vs. Flow control Exceptions change the linear flow of code, just like if, while, etc. However, they are only intended for error detection and handling Do not use exceptions as a substitute for ordinary flow control

RHS – SWC 31 Exceptions vs. Flow control for (int i = 0; i < noOfElements; i++) myArray[i] = i; try { for (int i = 0; /* No Test?? */ ; i++) myArray[i] = i; } catch (ArrayIndexOutOfBoundsException e) {} GOOD BAD

RHS – SWC 32 Exceptions summary Throw early, catch late Only catch, if you can handle the problem correctly You must deal with checked exceptions Use try, catch and finally appropriately Make your own exception classes, if you really need them Exceptions are not for flow control