Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
CS1101: Programming Methodology
http://www.comp.nus.edu.sg/~cs1101x/
Aaron Tan
This is Week 12
Week 10:
Chapter 11: Type Details and Alternate
Coding Mechanisms
This week:
Chapter 14: Exception Handling
Chatper 15: Files
2
Writing robust programs (1/3)
Suppose you have this statement
int value = stdIn.nextInt();
So far, we are assuming that the user always
follows instructions and never enters the wrong
data. But what if the user enters the following
in response to the above statement?
A
string (eg: “apple”)?
A
real number (eg: 12.3)?
3
Writing robust programs (2/3)
Refer to WrongInput.java
User
enters a string:
An exception is thrown.
Enter an integer: apple
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:819)
at java.util.Scanner.next(Scanner.java:1431)
at java.util.Scanner.nextInt(Scanner.java:2040)
at java.util.Scanner.nextInt(Scanner.java:2000)
at WrongInput.main(WrongInput.java:9)
User
enters real number:
Enter an integer: 12.34
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:819)
at java.util.Scanner.next(Scanner.java:1431)
at java.util.Scanner.nextInt(Scanner.java:2040)
at java.util.Scanner.nextInt(Scanner.java:2000)
at WrongInput.main(WrongInput.java:9)
4
Writing robust programs (3/3)
An exception is thrown when an error occurs. If
the exception is not caught, the program
crashes.
We would like to catch the exception so that
the program does not crash.
Let’s go on to Chapter 14 to see how to handle
exceptions.
5
Using throws to postpone catch
Refer to StudentList2.java and
StudentList2Driver.java
For checked exceptions, if you do not have a
try-catch block, then you must add ‘throws’ at
the heading of the method, or it will not
compile.
6
The finally Block
Sometimes there are situations where we need
to take certain actions regardless of whether
an exception is thrown or not. For example, we
need some “cleanup” code, like closing a file.
Use a finally block.
Refer to WriteToFile.java
7
Summary: try-catch block
Exception
try {
<t-stmt-1>
<t-stmt-2>
No Exception
try {
<t-stmt-1>
<t-stmt-2>
Assume <t-stmt-3>
throws an exception.
<t-stmt-3>
<t-stmt-4>
. . .
<t-stmt-n>
<t-stmt-3>
} catch (Exception e) {
<c-stmt-1>
. . .
<c-stmt-m>
}
<next stmt>
Ack: Thomas Wu
<t-stmt-4>
Remaining
statements in the
try block is skipped.
. . .
<t-stmt-n>
} catch (Exception e) {
<c-stmt-1>
Statements in the
catch block are
executed.
And the execution
continues to the
next statement
All statements in
the try block are
executed.
. . .
<c-stmt-m>
Statements in the
catch block are
skipped.
}
<next stmt>
8
Summary: multiple catch blocks
Exception
try {
<t-stmt-1>
<t-stmt-2>
No Exception
Assume <t-stmt-3>
throws an exception
and <catch-block-3>
is the matching block.
try {
<t-stmt-1>
<t-stmt-2>
<t-stmt-3>
<t-stmt-4>
. . .
<t-stmt-n>
<t-stmt-3>
<t-stmt-4>
Remaining
statements in the
try block is skipped.
}
All statements in
the try block are
executed and throw
no exceptions.
. . .
<t-stmt-n>
}
<catch-block-1>
<catch-block-2>
<catch-block-3>
. . .
<catch-block-m>
}
<catch-block-1>
<catch-block-2>
Statements
in the
matching
catch block
are executed.
<catch-block-3>
All catch
blocks are
skipped.
. . .
<catch-block-m>
}
<next stmt>
Ack: Thomas Wu
<next stmt>
9
Summary: with finally block
Exception
No Exception
Assume <t-stmt-i>
try {
throws an exception
<t-stmt-1>
and <catch-block-i> is
. . .
the matching block.
<t-stmt-i>
. . .
<t-stmt-n>
}
<catch-block-1>
. . .
<catch-block-i>
. . .
<catch-block-m>
try {
<t-stmt-1>
. . .
<t-stmt-i>
. . .
<t-stmt-n>
}
<catch-block-1>
. . .
<catch-block-i>
. . .
<catch-block-m>
} finally {
. . .
}
<next stmt>
} finally {
. . .
}
<next stmt>
Ack: Thomas Wu
finally block is
executed.
finally block is
executed.
10
Summary: Hierarchy of exceptions
There are over 60 classes in the hierarchy. Here are just some.
Ack: Thomas Wu
11
Handling files in UNIX
We have seen file processing in Java.
Let me introduce some features in UNIX
that handle files (we did it in our intro lab,
if you still remember!)
This is not part of Java.
12
UNIX File Input Redirection
<:To redirect input from a file
$ java MyProgram < inputFile
The text file inputFile
contains the input data.
$ java MySum
Enter 3 integers: 4 2 3
Sum = 9
$ cat sum.in
4 2 3
$ java MySum < sum.in
Enter 3 integers: Sum = 9
13
Example
MySum.java
import java.util.*;
class MySum {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.print("Enter 3 integers: ");
int a = stdIn.nextInt();
int b = stdIn.nextInt();
int c = stdIn.nextInt();
int sum = a + b + c;
System.out.println("Sum = " + sum);
}
}
14
UNIX File Output Redirection
>:To redirect output to a file (>>: to append to a
file)
$ java MyProgram > outputFile
The text file outputFile
contains the output data.
$ java MySum
Enter 3 integers: 4 2 3
Sum = 9
$ java MySum > sum.out
4 2 3
$ cat sum.out
Enter 3 integers: Sum = 9
15
Announcement/Reminder
Lab #5
Deadline: 5 November (Wednesday), 2359
hr.
PE
Please refer to website
http://www.comp.nus.edu.sg/~cs1101x/3_ca/pe.html
Consultation @ my office (COM1-03-12)
Wednesday (5 Nov) 3 – 6 pm
16
This is Week 12
Next week (last week!)
Chapter 12: Aggregation, Composition, and
Inheritance
17
End of file
18