Input/Ouput and Exception Handling. 2 Exceptions An exception is an object that describes an...

30
Input/Ouput and Exception Handling

Transcript of Input/Ouput and Exception Handling. 2 Exceptions An exception is an object that describes an...

Page 1: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

Input/Ouput and Exception Handling

Page 2: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

2

ExceptionsExceptions

An exception is an object that describes an unusual or erroneous situation

Exceptions are thrown by a program, and may be caught and handled by another part of the program

A program can be separated into a normal execution flow and an exception execution flow

An error is also represented as an object in Java, but usually represents a unrecoverable situation and should not be caught

Page 3: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

3

Exception HandlingException Handling

Java has a predefined set of exceptions and errors that can occur during execution

A program can deal with an exception in one of three ways:

• ignore it• handle it where it occurs• handle it an another place in the program

The manner in which an exception is processed is an important design consideration

Page 4: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

4

Exception HandlingException Handling

If an exception is ignored by the program, the program will terminate abnormally and produce an appropriate message

The message includes a call stack trace that indicates the line on which the exception occurred

The call stack trace also shows the method call trail that lead to the attempted execution of the offending line

• The getMessage method returns a string explaining why the exception was thrown

• The printStackTrace method prints the call stack trace

See Zero.java

Page 5: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

5

Exception HandlingException Handling

public class Zero{ // Deliberately divides by zero to produce an exception. public static void main (String[] args) { int numerator = 10; int denominator = 0; System.out.println (numerator / denominator); System.out.println ("This text will not be printed."); }}

Exception in thread "main" java.lang.ArithmeticException: / by zero

at Zero.main(Zero.java:8)

Page 6: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

6

The try StatementThe try Statement

To process an exception when it occurs, the line that throws the exception is executed within a try block

A try block is followed by one or more catch clauses, which contain code to process an exception

Each catch clause has an associated exception type and is called an exception handler

When an exception occurs, processing continues at the first catch clause that matches the exception type

See ProductCodes.java

Page 7: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

7

The finally ClauseThe finally Clause

A try statement can have an optional clause following the catch clauses, designated by the reserved word finally

The statements in the finally clause always are executed

If no exception is generated, the statements in the finally clause are executed after the statements in the try block complete

If an exception is generated, the statements in the finally clause are executed after the statements in the appropriate catch clause complete

Page 8: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

8

Exception PropagationException Propagation

An exception can be handled at a higher level if it is not appropriate to handle it where it occurs

Exceptions propagate up through the method calling hierarchy until they are caught and handled or until they reach the level of the main method

A try block that contains a call to a method in which an exception is thrown can be used to catch that exception

See Propagation.java

See ExceptionScope.java

Page 9: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

9

Exception HandlingException Handling

>java Propagation

Program beginning.Level 1 beginning.Level 2 beginning.Level 3 beginning.

The exception message is: / by zero

The call stack trace:java.lang.ArithmeticException: / by zero at ExceptionScope.level3(ExceptionScope.java:54) at ExceptionScope.level2(ExceptionScope.java:41) at ExceptionScope.level1(ExceptionScope.java:18) at Propagation.main(Propagation.java:17)

Level 1 ending.Program ending.

Page 10: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

10

The throw StatementThe throw Statement

A programmer can define an exception by extending the Exception class or one of its descendants

Exceptions are thrown using the throw statement

Usually a throw statement is nested inside an if statement that evaluates the condition to see if the exception should be thrown

When an exception is thrown, method terminates immediately• Execution continues with an exception handler

Page 11: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

public class BankAccount { public void withdraw(double amount) { if (amount > balance) { IllegalArgumentException exception = new IllegalArgumentException("Amount exceeds balance"); throw exception; } balance = balance - amount; } . . . }

Example

Page 12: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

Hierarchy of Exception Classes

Page 13: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

13

Checked ExceptionsChecked Exceptions

Two types of exceptions: • Checked

o The compiler checks that you don't ignore them

o Due to external circumstances that the programmer cannot prevent

o Majority occur when dealing with input and output

o For example, IOException

• Unchecked: o Extend the class RuntimeException or Error

o They are the programmer's fault

o Examples of runtime exceptions: NumberFormatException IllegalArgumentException NullPointerException

o Example of error: OutOfMemoryError

Page 14: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

14

Checked ExceptionsChecked Exceptions

An exception is either checked or unchecked

A checked exception either must be caught by a method, or must be listed in the throws clause of any method that may throw or propagate it

A throws clause is appended to the method header

The compiler will issue an error if a checked exception is not handled appropriately

Page 15: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

Unchecked ExceptionsUnchecked Exceptions

An unchecked exception does not require explicit handling, though it could be processed that way

The only unchecked exceptions in Java are objects of type RuntimeException or any of its descendants

Errors are similar to RuntimeException and its descendants

• Errors should not be caught

• Errors do not require a throws clause

Page 16: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

I/O StreamsI/O Streams

A stream is a sequence of bytes that flow from a source to a destination

In a program, we read information from an input stream and write information to an output stream

A program can manage multiple streams simultaneously

Page 17: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

I/O StreamsI/O Streams

The java.io package contains many classes that allow us to define various streams with particular characteristics

Some classes assume that the data consists of characters

Others assume that the data consists of raw bytes of binary information

Streams can be further subdivided as follows:

• data stream, which acts as either a source or destination

• processing stream, which alters or manipulates the basic data in the stream

Page 18: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

I/O StreamsI/O Streams

CharacterStreams

ByteStreams

DataStreams

ProcessingStreams

Input Streams

Output Streams

Page 19: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

Character vs. Byte StreamsCharacter vs. Byte Streams

A character stream manages 16-bit Unicode characters

A byte stream manages 8-bit bytes of raw binary data

• A program must determine how to interpret and use the bytes in a byte stream

• Typically they are used to read and write sounds and images

The InputStream and OutputStream classes (and their descendants) represent byte streams

The Reader and Writer classes (and their descendants) represent character streams

Page 20: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

Data vs. Processing StreamsData vs. Processing Streams

A data stream represents a particular source or destination such as a string in memory or a file on disk

A processing stream (also called a filtering stream) manipulates the data in the stream

• It may convert the data from one format to another

• It may buffer the stream

Page 21: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

The IOException ClassThe IOException Class

Operations performed by the I/O classes may throw an IOException

• A file intended for reading or writing might not exist

• Even if the file exists, a program may not be able to find it

• The file might not contain the kind of data we expect

An IOException is a checked exception

Page 22: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

Standard I/OStandard I/O

There are three standard I/O streams:

• standard input – defined by System.in• standard output – defined by System.out• standard error – defined by System.err

System.in typically represents keyboard input

System.out and System.err typically represent a particular window on the monitor screen

We use System.out when we execute println statements

Page 23: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

Writing Text FilesWriting Text Files

To write to a file, construct a PrintWriter object PrintWriter out = new PrintWriter("output.txt");

If file already exists, it is emptied before the new data are written into it

If file doesn't exist, an empty file is created

Use print and println to write into a PrintWriter: out.println(29.95);

out.println("Hello, World!");

You must close a file when you are done processing it: out.close();Otherwise, not all of the output may be written to the disk file

When the input or output file doesn't exist, a FileNotFoundException can occur

Page 24: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

Reading Text FilesReading Text Files

Information can be read from and written to text files by declaring and using the correct I/O streams

The FileReader class represents an input file containing character data

The FileReader and BufferedReader classes together create a convenient text file output stream

See CheckInventory.java

See InventoryItem.java

Page 25: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

Reading Text FilesReading Text Files

Simplest way to read text: use Scanner class

To read from a disk file, construct a FileReader

Then, use the FileReader to construct a Scanner object FileReader reader = new FileReader("input.txt"); Scanner in = new Scanner(reader);

Use the Scanner methods to read data from file

next, nextLine, nextInt, and nextDouble

Page 26: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

A Sample ProgramA Sample Program

Reads all lines of a file and sends them to the output file, preceded by line numbers

Sample input file: Mary had a little lamb Whose fleece was white as snow. And everywhere that Mary went, The lamb was sure to go!

Program produces the output file: /* 1 */ Mary had a little lamb /* 2 */ Whose fleece was white as snow. /* 3 */ And everywhere that Mary went, /* 4 */ The lamb was sure to go!

Program can be used for numbering Java source files

Page 27: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

fileio/LineNumberer.javafileio/LineNumberer.java

01: import java.io.FileReader;

02: import java.io.FileNotFoundException;

03: import java.io.PrintWriter;

04: import java.util.Scanner;

05:

06: public class LineNumberer

07: {

08: public static void main(String[] args)

09: throws FileNotFoundException

10: {

11: Scanner console = new Scanner(System.in);

12: System.out.print("Input file: ");

13: String inputFileName = console.next();

14: System.out.print("Output file: ");

15: String outputFileName = console.next();

16:

17: FileReader reader = new FileReader(inputFileName);

18: Scanner in = new Scanner(reader);

19: PrintWriter out = new PrintWriter(outputFileName);

20: int lineNumber = 1;

Page 28: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

fileio/LineNumberer.java (cont.)fileio/LineNumberer.java (cont.)

21:

22: while (in.hasNextLine())

23: {

24: String line = in.nextLine();

25: out.println("/* " + lineNumber + " */ " + line);

26: lineNumber++;

27: }

28:

29: out.close();

30: }

31: }

Page 29: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

File Dialog Boxes

Continued

Page 30: Input/Ouput and Exception Handling. 2 Exceptions  An exception is an object that describes an unusual or erroneous situation  Exceptions are thrown.

File Dialog Boxes (cont.)File Dialog Boxes (cont.)

JFileChooser chooser = new JFileChooser();

FileReader in = null; if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { File selectedFile = chooser.getSelectedFile(); reader = new FileReader(selectedFile); . . . }