Exceptions. Exception  Abnormal event occurring during program execution  Examples Manipulate nonexistent files FileReader in = new FileReader("mumbers.txt“);

Slides:



Advertisements
Similar presentations
Chapter 17 Failures and exceptions. This chapter discusses n Failure. n The meaning of system failure. n Causes of failure. n Handling failure. n Exception.
Advertisements

1 Exceptions: An OO Way for Handling Errors Rajkumar Buyya Grid Computing and Distributed Systems (GRIDS) Laboratory Dept. of Computer Science and Software.
Topics Introduction Types of Errors Exceptions Exception Handling
Exceptions Don’t Frustrate Your User – Handle Errors KR – CS 1401 Spring 2005 Picture – sysprog.net.
Introduction to Exceptions in Java. 2 Runtime Errors What are syntax errors? What are runtime errors? Java differentiates between runtime errors and exceptions.
COMP 121 Week 5: Exceptions and Exception Handling.
Exception Handling Xiaoliang Wang, Darren Freeman, George Blank.
Java I/O Java I/O is based on input streams and output streams. All input and output are defined in the Java IO package. 1.
MIT-AITI Lecture 14: Exceptions Handling Errors with Exceptions Kenya 2005.
Chapter 12 By Tony Gaddis Modified by Elizabeth Adams Copyright © 2005 Pearson Addison-Wesley. All rights reserved.
Exceptions Any number of exceptional circumstances may arise during program execution that cause trouble import java.io.*; class IOExample { public static.
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.
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. Exceptions Chapter 18 Programs: DriverException2 DriverException TestAgeInputException.
Slides prepared by Rose Williams, Binghamton University ICS201 Exception Handling University of Hail College of Computer Science and Engineering Department.
Exception Handling Topics We will discuss the following main topics: – Handling Exceptions – Throwing Exceptions – More about Input/Output Streams.
Exceptions Briana B. Morrison CSE 1302C Spring 2010.
Understand Error Handling Software Development Fundamentals LESSON 1.4.
Lecture 27 Exceptions COMP1681 / SE15 Introduction to Programming.
1 Lecture 4 Exception Handling. 2 Exception-Handling Fundamentals An exception is an abnormal condition that arises in a code sequence at run time A Java.
Java Programming Transparency No. 1-1 Java Exception Handling Cheng-Chia Chen.
Exception Handling. Lecture Objectives To learn how to throw exceptions To be able to design your own exception classes To understand the difference between.
Exceptions Three categories of errors: Syntax errors Runtime errors Logic errors Syntax errors: rules of the language have not been followed. Runtime error:
Exceptions in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Exception Handling An Exception is an indication of a problem that occurs during a program’s execution. Exception handling enables the programmer to create.
1 Exception Handling  Introduction to Exceptions  How exceptions are generated  A partial hierarchy of Java exceptions  Checked and Unchecked Exceptions.
Java Review 2 – Errors, Exceptions, Debugging Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Chapter 11: Handling Exceptions and Events J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Fourth.
Lecture 30 Streams and File I/O COMP1681 / SE15 Introduction to Programming.
1 Lecture#8: EXCEPTION HANDLING Overview l What exceptions should be handled or thrown ? l The syntax of the try statement. l The semantics of the try.
Example 1 :- Handling integer values public class Program1 { public static void main(String [] args) { int value1, value2, sum; value1 = Integer.parseInt(args[0]);
Chapter 13 Exception Handling F Claiming Exceptions F Throwing Exceptions F Catching Exceptions F Rethrowing Exceptions  The finally Clause F Cautions.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
Java Programming Exception Handling. The exception handling is one of the powerful mechanism provided in java. It provides the mechanism to handle the.
COMPUTER PROGRAMMING 2 Exceptions. What are Exceptions? Unexpected events that happen when the code is executing (during runtime). Exceptions are types.
Exceptions 1. Your computer takes exception Exceptions are errors in the logic of a program (run-time errors). Examples: Exception in thread “main” java.io.FileNotFoundException:
CS1101: Programming Methodology Recitation 3 – Control Structures.
Exceptions. Exception Abnormal event occurring during program execution Examples –Manipulate nonexistent files FileReader in = new FileReader("mumbers.txt“);
Exception. Runtime Error Consider the following program: public class BadArray { public static void main(String[] args) { // Create an array with three.
1 Recitation 8. 2 Outline Goals of this recitation: 1.Learn about loading files 2.Learn about command line arguments 3.Review of Exceptions.
Exceptions CSC 171 FALL 2004 LECTURE 24. READING Read Horstmann Chapter 14 This course covered Horstmann Chapters
Exceptions By the end of this lecture you should be able to: explain the term exception; distinguish between checked and unchecked exception classes in.
1 Advanced Flow of Control : Introduction This chapter focuses on: –exception processing –catching and handling exceptions –creating new exceptions –exception.
Odds and Ends. CS 21a 09/18/05 L14: Odds & Ends Slide 2 Copyright © 2005, by the authors of these slides, and Ateneo de Manila University. All rights.
Iteration Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Iteration. Java looping Options –while –do-while –for Allow programs to control how many times a statement list is executed.
Sheet 3 HANDLING EXCEPTIONS Advanced Programming using Java By Nora Alaqeel.
Chapter 14 Exception Handling. Chapter Goals To learn how to throw exceptions To be able to design your own exception classes To understand the difference.
Java Programming: From Problem Analysis to Program Design, 4e Chapter 11 Handling Exceptions and Events.
Exceptions and Assertions Chapter 15 – CSCI 1302.
Lecture10 Exception Handling Jaeki Song. Introduction Categories of errors –Compilation error The rules of language have not been followed –Runtime error.
Exception and Exception Handling. Exception An abnormal event that is likely to happen during program is execution Computer could run out of memory Calling.
ECE122 L23: Exceptions December 6, 2007 ECE 122 Engineering Problem Solving with Java Lecture 24 Exceptions.
Exceptions and Error Handling. Exceptions Errors that occur during program execution We should try to ‘gracefully’ deal with the error Not like this.
Winter 2006CISC121 - Prof. McLeod1 Last Time Reviewed class structure: –attributes –methods –(inner classes) Looked at the effects of the modifiers: –public.
Garbage Collection It Is A Way To Destroy The Unused Objects. To do so, we were using free() function in C language and delete() in C++. But, in java it.
Agenda Introduction Errors and Exception Exception Hierarchy Classification of Exceptions Built in Exceptions Exception Handling in Java User defined.
The Problem Unexpected erroneous situations are often discovered by code which is NOT prepared to remedy the error………. For example.. String in = JOptionPane.showInputDialog(“enter.
Introduction to Exceptions in Java
CS1101: Programming Methodology Recitation 7 – Exceptions
Introduction to Exceptions in Java
Testing and Exceptions
CSE 501N Fall ’09 17: Exception Handling
Exception Handling.
Web Design & Development Lecture 7
Lecture 11 Objectives Learn what an exception is.
Chapter 12 Exception Handling and Text IO Part 1
Exceptions.
Exceptions.
Java Programming: From Problem Analysis to Program Design, 4e
Presentation transcript:

Exceptions

Exception  Abnormal event occurring during program execution  Examples Manipulate nonexistent files FileReader in = new FileReader("mumbers.txt“); Improper array subscripting int[] a = new int[3]; a[4] = 1000; Improper arithmetic operations a[2] = 1000 / 0;

Java treatment of an exception  If exception occurs and a handler is in effect Flow of control is transferred to the handler After handler completes flow of control continues with the statement following the handler  If exception occurs and there is no handler for it The program terminates

Task  Prompt and extract the name of a file  From that file, two integer values are to be extracted  Compute and display the quotient of the values

Implementation public static void main(String[] args) throws IOException { BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Filename: "); String s = stdin.readLine(); BufferedReader filein = new BufferedReader( new FileReader(s)); int a = Integer.parseInt(filein.readLine()); int b = Integer.parseInt(filein.readLine()); System.out.println( a / b ); } Necessary because main() does not handle its possible IOExceptions

What can go wrong? public static void main(String[] args) throws IOException { BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Filename: "); String s = stdin.readLine(); BufferedReader filein = new BufferedReader( new FileReader(s)); int a = Integer.parseInt(filein.readLine()); int b = Integer.parseInt(filein.readLine()); System.out.println( a / b ); }

How can we deal with the problems? public static void main(String[] args) throws IOException { BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Filename: "); String s = stdin.readLine(); BufferedReader filein = new BufferedReader( new FileReader(s)); int a = Integer.parseInt(filein.readLine()); int b = Integer.parseInt(filein.readLine()); System.out.println( a / b ); }

Exception handlers  Code that might generate an exception is put in a try block If there is no exception, then the handlers are ignored  For each potential exception type there is a catch handler When handler finishes the program continues with statement after the handlers try { Code that might throw exceptions of types E or F } catch (E e) { Handle exception e } catch (F f) { Handle exception f } More code

Introduce try-catch blocks public static void main(String[] args) throws IOException { BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Filename: "); String s = stdin.readLine(); BufferedReader filein = new BufferedReader( new FileReader(s)); int a = Integer.parseInt(filein.readLine()); int b = Integer.parseInt(filein.readLine()); System.out.println( a / b ); }

Getting the filename BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Filename: "); String s = null; try { s = stdin.readLine(); } catch (IOException e) { System.err.println("Cannot read input"); System.exit(0); }

Set up the file stream processing BufferedReader filein = null; try { filein = new BufferedReader(new FileReader(s)); } catch (FileNotFoundException e) { System.err.println(s + ": cannot be opened"); System.exit(0); } How come the main() throws expression did not indicate it could throw a FileNotFoundException?

Getting the inputs try { int a = Integer.parseInt(filein.readLine()); int b = Integer.parseInt(filein.readLine()); System.out.println( a / b ); } catch (IOException e) { System.err.println(s + ": unable to read values"); }

Converting the inputs try { int a = Integer.parseInt(filein.readLine()); int b = Integer.parseInt(filein.readLine()); System.out.println( a / b ); } catch (IOException e) { System.err.println(s + ": unable to read values"); } catch (NumberFormatException e) { if (e.getMessage().equals("null")) { System.err.println(s + ": need two inputs"); } else { System.err.println(s + ": invalid inputs"); } How come the main() throws expression did not indicate it could throw a NumberFormatException

Run time exceptions  Java designers realized Runtime exceptions can occur throughout a program Cost of implementing handlers for runtime exceptions typically exceeds the expected benefit  Java makes it optional for a method to catch them or to specify that it throws them  However, if a program does not handle its runtime exceptions it is terminated when one occurs

Computing the quotient try { int a = Integer.parseInt(filein.readLine()); int b = Integer.parseInt(filein.readLine()); System.out.println( a / b ); } catch (IOException e) { System.err.println(s + ": unable to read values"); } catch (NumberFormatException e) { if (e.getMessage().equals("null")) { System.err.println(s + ": need two inputs"); } else { System.err.println(s + ": invalid inputs"); } catch (ArithmeticException e) { System.err.println(s + ": unexpected 0 input value"); }

Commands type and cat  Most operating systems supply a command for listing the contents of files Windows: type Unix, Linux, and OS X: cat type filename 1 filename 2 … filename n  Displays the contents of filename 1 filename 2 … and filename n to the console window

Possible method main() for Type.java public static void main(String[] args) { for (int i = 0; i < args.length; ++i) { BufferedReader filein = new BufferedReader( new FileReader(args[i])); String s = filein.readLine(); while (s != null) { System.out.println(s); s = filein.readLine(); } filein.close(); } } What can go wrong?

Use a finally block public static void main(String[] args) { for (int i = 0; i < args.length; ++i) { BufferedReader filein = new BufferedReader( new FileReader(args[i])); String s = filein.readLine(); while (s != null) { System.out.println(s); s = filein.readLine(); } filein.close(); } File should be closed once its processing stops, regardless why it stopped

Use a finally block try { String s = filein.readLine(); while (s != null) { System.out.println(s); s = filein.readLine(); } catch (IOException e) { System.err.println(args[i] + ": processing error"); } finally { try { filein.close(); } catch (IOException e) { System.err.println(args[i] + ": system error"); } Always executed after its try-catch blocks complete

Exceptions  Can create your exception types  Can throw exceptions as warranted

Task  Represent the depositing and withdrawing of money from a bank account  What behaviors are needed Construct a new empty bank account BankAccount() Construct a new bank account with initial funds BankAccount(int n) Deposit funds addFunds(int n) Withdraw funds removeFunds(int n) Get balance Int getBalance()

Sample usage public static void main(String[] args) throws IOException { BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); BankAccount savings = new BankAccount(); System.out.print("Enter deposit: "); int deposit = Integer.parseInt(stdin.readLine()); savings.addFunds(deposit); System.out.print("Enter widthdrawal: "); int withdrawal = Integer.parseInt(stdin.readLine()); savings.removeFunds(withdrawl); System.out.println("Closing balance: " + savings.getBalance()); }

Task  Represent the depositing and withdrawing of money from a bank account  What behaviors are needed Construct a new empty bank account BankAccount() Construct a new bank account with initial funds BankAccount(int n) Deposit funds addFunds(int n) Withdraw funds removeFunds(int n) Get balance int getBalance() What can go wrong?

Create a NegativeAmountException // Represents an abnormal bank account event public class NegativeAmountException extends Exception { // NegativeAmountException(): creates exception with // message s public NegativeAmountException(String s) { super(s); }  Class Exception provides the exceptions behavior that might be needed  Class NegativeAmountException gives the specialization of exception type that is needed

Sample usage public static void main(String[] args) throws IOException, NegativeAmountException { BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); BankAccount savings = new BankAccount(); System.out.print("Enter deposit: "); int deposit = Integer.parseInt(stdin.readLine()); savings.addFunds(deposit); System.out.print("Enter widthdrawal: "); int withdrawal = Integer.parseInt(stdin.readLine()); savings.removeFunds(withdrawl); System.out.println("Closing balance: " + savings.getBalance()); }

Class BankAccount  Instance variable balance  Construct a new empty bank account BankAccount()  Construct a new bank account with initial funds BankAccount(int n) throws NegativeAmountException  Deposit funds addFunds(int n) throws NegativeAmountException  Withdraw funds removeFunds(int n) throws NegativeAmountException  Get balance Int getBalance()

Class BankAccount // BankAccount(): default constructor for empty balance public BankAccount() { balance = 0; } // BankAccount(): specific constructor for a new balance n public BankAccount(int n) throws NegativeAmountException { if (n >= 0) { balance = n; } else { throw new NegativeAmountException("Bad balance"); }

Class BankAccount // getBalance(): return the current balance public int getBalance() { return balance; } // addFunds(): deposit amount n public void addFunds(int n) throws NegativeAmountException { if (n >= 0) { balance += n; } else { throw new NegativeAmountException("Bad deposit"); }

Class BankAccount // removeFunds(): withdraw amount n public void removeFunds(int n) throws NegativeAmountException { if (n < 0) { throw new NegativeAmountException("Bad withdrawal"); } else if (balance < n) { throw new NegativeAmountException("Bad balance"); } else { balance -= n; }

Using NegativeAmountException System.out.print("Enter deposit: "); try { int deposit = Integer.parseInt(stdin.readLine()); savings.addFunds(deposit); } catch (NegativeAmountException e) { System.err.println(“Cannot deposit negative funds“); System.exit(0); }

Using NegativeAmountException System.out.print("Enter withdrawal: "); try { int withdrawal = integer.parseInt(stdin.readLine()); savings.removeFunds(withdrawl); } catch (NegativeAmountException e) { if (e.message().equals("Bad withdrawal")) System.err.println(“Cannot withdraw negative funds“); else { System.err.println("Withdrawal cannot leave " "negative balance"); } System.exit(0); }