Handling errors 3.0. 2 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Main concepts to be covered.

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.
Lecture 23 Input and output with files –(Sections 2.13, 8.7, 8.8) Exceptions and exception handling –(Chapter 17)
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.
Errors and Exceptions The objectives of this chapter are: To understand the exception handling mechanism defined in Java To explain the difference between.
An Introduction to Java Programming and Object- Oriented Application Development Chapter 8 Exceptions and Assertions.
COMP 121 Week 5: Exceptions and Exception Handling.
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.
File I/O and Exceptions File I/O Exceptions Throwing Exceptions Try statement and catch / finally clauses Checked and unchecked exceptions Throws clause.
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.
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)
1 Exception Handling  Introduction to Exceptions  How exceptions are generated  A partial hierarchy of Java exceptions  Checked and Unchecked Exceptions.
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.
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.
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.
Handling errors Exception handling and throwing Simple file processing.
Exception Handling 1. Introduction Users may use our programs in an unexpected ways. Due to design errors or coding errors, our programs may fail in unexpected.
Object Oriented Programming
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.
07 Coding Conventions. 2 Demonstrate Developing Local Variables Describe Separating Public and Private Members during Declaration Explore Using System.exit.
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.
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.
Objects First With Java A Practical Introduction Using BlueJ Handling errors 1.0.
Exceptions and Assertions Chapter 15 – CSCI 1302.
Exception Handling in Java Topics: Introduction Errors and Error handling Exceptions Types of Exceptions Coding Exceptions Summary.
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.
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.
13 Handling errors. 2 Förel. 3Object oriented programming, DAT050, DAI2, 16/17, lp 1 Main concepts to be covered Defensive programming. –Anticipating.
Eighth Lecture Exception Handling in Java
Introduction to Exceptions in Java
Introduction to Exceptions in Java
Exceptions The Need for Exceptions Throwing Exceptions
Creating and Modifying Text part 2
Exceptions 10-Nov-18.
COS 260 DAY 27 Tony Gauvin.
COS 260 DAY 26 Tony Gauvin.
COS 260 DAY 26 Tony Gauvin.
Exception Handling.
Exceptions 19-Feb-19.
Exceptions 7-Apr-19.
Exceptions 25-Apr-19.
Exceptions 22-Apr-19.
Exceptions 10-May-19.
Exceptions 5-Jul-19.
Exception Handling.
Presentation transcript:

Handling errors 3.0

2 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, 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.

3 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Some causes of error situations Incorrect implementation. –Does not meet the specification. Inappropriate object request. –E.g., invalid index. Inconsistent or inappropriate object state. –E.g. arising through class extension.

4 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Not always programmer error Errors often arise from the environment: –Incorrect URL entered. –Network interruption. File processing is particular error- prone: –Missing files. –Lack of appropriate permissions.

5 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Exploring errors Explore error situations through the address-book projects. Two aspects: –Error reporting. –Error handling.

6 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Defensive programming Client-server interaction. –Should a server assume that clients are well-behaved? –Or should it assume that clients are potentially hostile? Significant differences in implementation required.

7 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Issues to be addressed How much checking by a server on method calls? How to report errors? How can a client anticipate failure? How should a client deal with failure?

8 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling An example Create an AddressBook object. Try to remove an entry. A runtime error results. –Whose ‘fault’ is this? Anticipation and prevention are preferable to apportioning blame.

9 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Argument values Arguments represent a major ‘vulnerability’ for a server object. –Constructor arguments initialize state. –Method arguments often contribute to behavior. Argument checking is one defensive measure.

10 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Checking the key public void removeDetails(String key) { if(keyInUse(key)) { ContactDetails details = book.get(key); book.remove(details.getName()); book.remove(details.getPhone()); numberOfEntries--; }

11 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Server error reporting How to report illegal arguments? –To the user? Is there a human user? Can they solve the problem? –To the client object? Return a diagnostic value. Throw an exception.

12 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Returning a diagnostic public boolean removeDetails(String key) { if(keyInUse(key)) { ContactDetails details = book.get(key); book.remove(details.getName()); book.remove(details.getPhone()); numberOfEntries--; return true; } else { return false; }

13 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Client responses Test the return value. –Attempt recovery on error. –Avoid program failure. Ignore the return value. –Cannot be prevented. –Likely to lead to program failure. Exceptions are preferable.

14 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.

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

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

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

18 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Exception categories Checked 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.

19 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.

20 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.

21 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 NullPointerException( "null key in getDetails"); } if(key.trim().length() == 0) { throw new IllegalArgumentException( "Empty key passed to getDetails"); } return book.get(key); }

22 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."); }

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

24 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

25 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. }

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

27 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.... }

28 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. }

29 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.

30 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.

31 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."; }

32 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.

33 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 assertion is false.

34 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"; }

35 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;

36 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.

37 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 { addressbook.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; }

38 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.

39 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 address book. if(book.keyInUse(details.getName() || book.keyInUse(details.getPhone()) { book.changeDetails(details); } else { book.addDetails(details); } The addDetails method could now throw an unchecked exception.

40 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Text input-output Input-output is particularly error- prone. –It involves interaction with the external environment. The java.io package supports input-output. java.io.IOException is a checked exception.

41 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 IO.

42 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Text output to file Use the FileWriter class. –Open a file. –Write to the file. –Close the file. Failure at any point results in an IOException.

43 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Text output to file 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 }

44 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. Failure at any point results in an IOException.

45 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Text input from file 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 }

46 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. –java.io.InputStream Often wrapped in a java.util.Scanner. Scanner supports parsing of textual input. –nextInt, nextLine, etc. Scanner with File an alternative to BufferedReader with FileReader.

47 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.

48 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.