COS 260 DAY 26 Tony Gauvin.

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

Lilian Blot VARIABLE SCOPE EXCEPTIONS FINAL WORD Final Lecture Spring 2014 TPOP 1.
Exceptions Ensuring program reliability. Program correctness The term program correctness refers to a program’s working as advertised; that is, it produces.
CSM-Java Programming-I Spring,2005 Exceptions Lesson - 7.
CS102--Object Oriented Programming
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.
Introduction to Exceptions in Java. 2 Runtime Errors What are syntax errors? What are runtime errors? Java differentiates between runtime errors and exceptions.
An Introduction to Java Programming and Object- Oriented Application Development Chapter 8 Exceptions and Assertions.
COMP 121 Week 5: Exceptions and Exception Handling.
Handling errors Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Main concepts to be covered.
Text File I/O. Text Files and Binary Files Files that are designed to be read by human beings, and that can be read or written with an editor are called.
CPSC150 Click to edit Master title style Click to edit Master text styles Second level Third level Fourth level Fifth level 1 CPSC150 Exceptions When things.
11-Jun-15 Exceptions. 2 Errors and Exceptions An error is a bug in your program dividing by zero going outside the bounds of an array trying to use a.
EXCEPTIONS Def: An exception is a run-time error. Examples include: attempting to divide by zero, or manipulate invalid data.
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.
Chapter 8 Exceptions. Topics Errors and Exceptions try-catch throwing Exceptions Exception propagation Assertions.
16-Jun-15 Exceptions. Errors and Exceptions An error is a bug in your program dividing by zero going outside the bounds of an array trying to use a null.
Exceptions in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Files and Streams CS 21a Chapter 11 of Horstmann.
Exceptions. Errors and Exceptions An error is a bug in your program –dividing by zero –going outside the bounds of an array –trying to use a null reference.
06 - Exceptions. 2 ©S. Uchitel, 2004 A familiar sight? Bluescreen.scr.
Handling errors Writing robust code. 16/12/2004Lecture 10: Handling Errors2 Main concepts to be covered Defensive programming. –Anticipating that things.
CPSC150 Week 13 Chapter 12 Exceptions (from slides provided by textbook web site)
Java Exception Handling ● Exception = an event that occurs during the execution of a program that disrupts the normal flow of instructions: – Examples:
Handling errors Main concepts to be covered Defensive programming. –Anticipating that things could go wrong. Exception handling and throwing. Error.
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 18 Exception Handling.
Handling errors Exception handling and throwing Simple file processing.
Chapter 12: Exception Handling
CC1007NI: Further Programming Week 8-9 Dhruba Sen Module Leader (Islington College)
Lecture 4. Greenfoot 1 Pablo Romero, Department of Informatics Kinect in Greenfoot.
Based on OOP with Java, by David J. Barnes Input-Output1 The java.io Package 4 Text files Reader and Writer classes 4 Byte stream files InputStream, FileInputStream,
OOP with Java, David J. Barnes Input-Output1 A complex issue in programming language design. The interface to the outside world. –Differences must be accommodated.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Java Software Solutions Foundations of Program Design Sixth Edition by Lewis.
Objects First With Java A Practical Introduction Using BlueJ Handling errors 1.0.
CMSC 202 Text File I/O. Aug 8, Text Files and Binary Files Files that are designed to be read by human beings, and that can be read or written with.
Fall 2002CS 150: Intro. to Computing1 Streams and File I/O (That is, Input/Output) OR How you read data from files and write data to files.
Exceptions and Assertions Chapter 15 – CSCI 1302.
1 COS 260 DAY 14 Tony Gauvin. 2 Agenda Questions? 6 th Mini quiz graded  Oct 29 –Chapter 6 Assignment 4 will be posted later Today –First two problems.
OOP (Java): Exceptions/ OOP Objectives – –examine Java's exception handling Semester 2, Exceptions.
Handling errors Main concepts to be covered Defensive programming –Anticipating that things could go wrong Exception handling and throwing Error.
Lecture10 Exception Handling Jaeki Song. Introduction Categories of errors –Compilation error The rules of language have not been followed –Runtime error.
Exceptions in OO Programming Introduction Errors Exceptions in Java Handling exceptions The Try-Catch-Finally mechanism Example code Exception propagation.
Lecture 5: Exception Handling and Text File I/O Michael Hsu CSULA.
Handling errors Main concepts to be covered Defensive programming. –Anticipating that things could go wrong. Exception handling and throwing. Error.
1 Input-Output A complex issue in programming language design. The interface to the outside world. –Differences must be accommodated as transparently as.
13 Handling errors. 2 Förel. 3Object oriented programming, DAT050, DAI2, 16/17, lp 1 Main concepts to be covered Defensive programming. –Anticipating.
CMSC 202 Text File I/O.
DEFENSIVE PROGRAMMING
Introduction to Exceptions in Java
Introduction to Exceptions in Java
Exceptions The Need for Exceptions Throwing Exceptions
Creating and Modifying Text part 2
CSE 501N Fall ’09 17: Exception Handling
Advanced Programming Behnam Hatami Fall 2017.
COS 260 DAY 27 Tony Gauvin.
CSS 161: Fundamentals of Computing
Unit 6 Working with files. Unit 6 Working with files.
COS 260 DAY 26 Tony Gauvin.
Exception Handling.
COS 260 DAY 4 Tony Gauvin.
Exceptions 25-Apr-19.
Exceptions 22-Apr-19.
Chapter 12 Exception Handling and Text IO Part 1
Exception Handling Contents
Exceptions 10-May-19.
Java Basics Exception Handling.
Exceptions 5-Jul-19.
Exception Handling.
Exceptions and Exception Handling
Presentation transcript:

COS 260 DAY 26 Tony Gauvin

Agenda Finish Discussion on Handling Errors Questions? 11th Mini Quiz corrected Good results Assignment 6 still not corrected Assignment 7 Due Due Dec 10 Finish Discussion on Handling Errors

Final Countdown Dec 14 @ 10 AM Dec 10 12th mini quiz Finish Chapter 12 Capstone Presentations Dec 10 Finish Chapter 12 Assignment 7 Due Jamie  Miniquiz 12 @ 11AM -5PM Copyright © 2014 Pearson Education, Inc.

Objects First with Java Handling errors 5.0 © David J. Barnes and Michael Kölling

Main concepts to be covered Defensive programming. Anticipating that things could go wrong. Exception handling and throwing. Error reporting. Simple file processing. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Exception-throwing principles A special language feature. No ‘special’ return value needed. Errors cannot be ignored in the client. The normal flow-of-control is interrupted. Specific recovery actions are encouraged. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Objects First with Java Throwing an exception /** * Look up a name or phone number and return the * corresponding contact details. * @param key The name or number to be looked up. * @return The details corresponding to the key, * or null if there are none matching. * @throws IllegalArgumentException if * the key is invalid. */ public ContactDetails getDetails(String key) { if(key == null) { throw new IllegalArgumentException( "null key in getDetails"); } return book.get(key); The method comment is included to illustrate the @throws javadoc documentation. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

Throwing an exception An exception object is constructed: new ExceptionType("...") The exception object is thrown: throw ... Javadoc documentation: @throws ExceptionType reason Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

The exception class hierarchy http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Exception categories Checked exceptions Unchecked exceptions Subclass of Exception Use for anticipated failures. Where recovery may be possible. Unchecked exceptions Subclass of RuntimeException Use for unanticipated failures. Where recovery is unlikely. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

The effect of an exception The throwing method finishes prematurely. No return value is returned. Control does not return to the client’s point of call. So the client cannot carry on regardless. A client may ‘catch’ an exception. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Unchecked exceptions Use of these is ‘unchecked’ by the compiler. Cause program termination if not caught. This is the normal practice. IllegalArgumentException is a typical example. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Argument checking public ContactDetails getDetails(String key) { if(key == null) { throw new IllegalArgumentException( "null key in getDetails"); } if(key.trim().length() == 0) { "Empty key passed to getDetails"); return book.get(key); Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Preventing object creation public ContactDetails(String name, String phone, String address) { if(name == null) { name = ""; } if(phone == null) { phone = ""; if(address == null) { address = "";   this.name = name.trim(); this.phone = phone.trim(); this.address = address.trim(); if(this.name.length() == 0 && this.phone.length() == 0) { throw new IllegalStateException( "Either the name or phone must not be blank."); Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Exception handling Checked exceptions are meant to be caught and responded to. The compiler ensures that their use is tightly controlled. In both server and client objects. Used properly, failures may be recoverable. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

The throws clause Methods throwing a checked exception must include a throws clause: public void saveToFile(String destinationFile) throws IOException Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

The try statement Clients catching an exception must protect the call with a try statement: try { Protect one or more statements here. } catch(Exception e) { Report and recover from the exception here. } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

The try statement 1. Exception thrown from here try { addressbook.saveToFile(filename); successful = true; } catch(IOException e) { System.out.println("Unable to save to " + filename); successful = false; 2. Control transfers to here Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Catching multiple exceptions try { ... ref.process(); } catch(EOFException e) { // Take action on an end-of-file exception. catch(FileNotFoundException e) { // Take action on a file-not-found exception. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Multi-catch – a Java 7 feature try { ... ref.process(); } catch(EOFException | FileNotFoundException e) { // Take action appropriate to both types // of exception. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

The finally clause try { Protect one or more statements here. } catch(Exception e) { Report and recover from the exception here. finally { Perform any actions here common to whether or not an exception is thrown. Possible flow of control try  finally try (exception raised) Catch (if exception matched)finally Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

The finally clause A finally clause is executed even if a return statement is executed in the try or catch clauses. A uncaught or propagated exception still exits via the finally clause. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Defining new exceptions Extend RuntimeException for an unchecked or Exception for a checked exception. Define new types to give better diagnostic information. Include reporting and/or recovery information. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

public class NoMatchingDetailsException extends Exception { private String key;   public NoMatchingDetailsException(String key) this.key = key; } public String getKey() return key; public String toString() return "No details matching '" + key + "' were found."; Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Adding an new exception Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Assertions Used for internal consistency checks. E.g. object state following mutation. Used during development and normally removed in production version. E.g. via a compile-time option. Java has an assert statement. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Java Assertion Statement Two forms available: assert boolean-expression assert boolean-expression : expression The boolean-expression expresses something that should be true at this point. An AssertionError is thrown if the expression evaluates to false. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Assert Statement public void removeDetails(String key) { if(key == null){ throw new IllegalArgumentException("..."); } if(keyInUse(key)) { ContactDetails details = book.get(key); book.remove(details.getName()); book.remove(details.getPhone()); numberOfEntries--; assert !keyInUse(key); assert consistentSize() : "Inconsistent book size in removeDetails"; Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Guidelines for Assertions They are not an alternative to throwing exceptions. Use for internal checks. Remove from production code. Don’t include normal functionality: // Incorrect use: assert book.remove(name) != null; Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Error recovery Clients should take note of error notifications. Check return values. Don’t ‘ignore’ exceptions. Include code to attempt recovery. Will often require a loop. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Attempting recovery // Try to save the address book. boolean successful = false; int attempts = 0; do { try { contacts.saveToFile(filename); successful = true; } catch(IOException e) { System.out.println("Unable to save to " + filename); attempts++; if(attempts < MAX_ATTEMPTS) { filename = an alternative file name; } while(!successful && attempts < MAX_ATTEMPTS); if(!successful) { Report the problem and give up; Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Error avoidance Clients can often use server query methods to avoid errors. More robust clients mean servers can be more trusting. Unchecked exceptions can be used. Simplifies client logic. May increase client-server coupling. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Avoiding an exception // Use the correct method to put details // in the contacts list. if(contacts.keyInUse(details.getName() || contacts.keyInUse(details.getPhone()) { contacts.changeDetails(details); } else { contacts.addDetails(details); The addDetails method could now throw an unchecked exception. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Review Runtime errors arise for many reasons. An inappropriate client call to a server object. A server unable to fulfill a request. Programming error in client and/or server. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Review Runtime errors often lead to program failure. Defensive programming anticipates errors – in both client and server. Exceptions provide a reporting and recovery mechanism. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

File-based input-output Input-output is particularly error-prone because it involves interaction with the external environment. The java.io package supports input-output. java.io.IOException is a checked exception. Java 7 adds the java.nio packages. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

File and Path java.io.File provides information about files and folders/directories. java.nio.file.Path is the Java 7 alternative. File is a class; Path is an interface. The Files and Paths classes in java.nio.file are also used. http://docs.oracle.com/javase/tutorial/essential/io/legacy.html Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Readers, writers, streams Readers and writers deal with textual input. Based around the char type. Streams deal with binary data. Based around the byte type. The address-book-io project illustrates textual I/O. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

File output The three stages of file output. Open a file. Write to the file. Close the file (but see ARM in Java 7). Failure at any point results in an IOException. Use FileWriter for text files. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Text output to file See the weblog-analyzer project try { FileWriter writer = new FileWriter("name of file"); while(there is more text to write) { ... writer.write(next piece of text); } writer.close(); catch(IOException e) { something went wrong with accessing the file See the weblog-analyzer project Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Try-with-resource – Java 7 Used for ensuring ‘resources’ are closed after use. Removes need for explicit closure on both successful and failed control flows. Also known as ‘automatic resource management’ (ARM). Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Try-with-resource No close() call required in either clause. try(FileWriter writer = new FileWriter("name of file")) { while(there is more text to write) { ... writer.write(next piece of text); } catch(IOException e) { something went wrong with accessing the file No close() call required in either clause. See the weblog-analyzer-v7 project. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Text input from file Use the FileReader class. Augment with BufferedReader for line-based input. Open a file. Read from the file. Close the file (but see ARM in Java 7). Failure at any point results in an IOException. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Text input from file See tech-support-io try { BufferedReader reader = new BufferedReader(new FileReader("filename")); String line = reader.readLine(); while(line != null) { do something with line line = reader.readLine(); } reader.close(); catch(FileNotFoundException e) { the specified file could not be found catch(IOException e) { something went wrong with reading or closing See tech-support-io Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Text input from file – Java 7 BufferedReader created via static newBufferedReader method in the java.nio.file.Files class. Requires a Charset from java.nio.charset, e.g.: "US-ASCII" "ISO-8859-1" Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Text input – Java 7 Charset charset = Charset.forName("US-ASCII"); Path path = Paths.get("file"); try(BufferedReader reader = Files.newBufferedReader(path, charset)) { use reader to process the file } catch(FileNotFoundException e) { deal with the exception catch(IOException e) { Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Text input from the terminal System.in maps to the terminal: Its type is java.io.InputStream It is often wrapped in a java.util.Scanner. Scanner with File is an alternative to BufferedReader with FileReader. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Scanner: parsing input Scanner supports parsing of textual input. nextInt, nextLine, etc. Its constructors support String, File and Path (Java 7) arguments. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Review Input/output is an area where errors cannot be avoided. The environment in which a program is run is often outside a programmer’s control. Exceptions are typically checked. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Review Key classes for text input/output are FileReader, BufferedReader, FileWriter and Scanner. Binary input/output involves Stream classes. Java 7 introduces the Path interface as an alternative to File. Java 7 introduces try-with-resource. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling