Title: Exception Handling and Format output
1Exception Handlingand Format output
2Midterm exam
- Date Oct 31
- Content
- Week 1 to Week 8
- Format
- Multiple choice
- Determine the results of the code
- Write simple code
3Introduction
- Exception an indication of a problem that
occurs during a programs execution - Exception handling resolving exceptions that
may occur so program can continue or terminate
gracefully - Exception handling enables programmers to create
programs that are more robust and fault-tolerant
4Introduction
- Examples
- ArrayIndexOutOfBoundsException an attempt is
made to access an element past the end of an
array - NullPointerException when a null reference is
used where an object is expected
5Exception-Handling Overview
- Intermixing program logic with error-handling
logic can make programs difficult to read,
modify, maintain and debug - Exception handling enables programmers to remove
error-handling code from the main line of the
programs execution - Improves clarity
- Enhances modifiability
6Example Not Catching Exceptions
Error message for invalid input
Exception in thread "main" java.lang.NumberFormatE
xception For input string "ten" at
java.lang.NumberFormatException.forInputString(Unk
nown Source) at java.lang.Integer.parseInt(Unknown
Source) at java.lang.Integer.parseInt(Unknown
Source) at Week7.SimpleException.main(SimpleExcept
ion.java12)
7Catching an Exception
8Performance Tip
- If the potential problems occur infrequently,
intermixing program and error-handling logic can
degrade a programs performance, because the
program must perform (potentially frequent) tests
to determine whether the task executed correctly
and the next task can be performed.
9Try-catch what does that mean?
- When an exception occurs, or is thrown, the
normal sequence of flow is terminated. The
exception-handling routine is then executed we
say the thrown exception is caught.
10Try-catch what does that mean?
- try block encloses code that might throw an
exception and the code that should not execute if
an exception occurs - Consists of keyword try followed by a block of
code enclosed in curly braces
11Try-catch what does that mean?
- catch block catches (i.e., receives) and
handles an exception, contains - Begins with keyword catch
- Exception parameter in parentheses exception
parameter identifies the exception type and
enables catch block to interact with caught
exception object - Block of code in curly braces that executes when
exception of proper type occurs
12Try-catch what does that mean?
- Matching catch block the type of the exception
parameter matches the thrown exception type
exactly or is a superclass of it - Uncaught exception an exception that occurs for
which there are no matching catch blocks - Cause program to terminate if program has only
one thread Otherwise only current thread is
terminated and there may be adverse effects to
the rest of the program
13try-catch Control Flow
14try-catch Control Flow
- When an exception occurs
- try block terminates immediately
- Program control transfers to first matching catch
block - After exception is handled
- Termination model of exception handling program
control does not return to the throw point
because the try block has expired Flow of
control proceeds to the first statement after the
last catch block - Resumption model of exception handling program
control resumes just after throw point
15try-catch Control Flow
- try statement consists of try block and
corresponding catch and/or finally blocks
Logic errors can occur if you assume that after
an exception is handled, control will return to
the first statement after the throw point.
16Tip
- With exception handling, a program can continue
executing (rather than terminating) after dealing
with a problem. This helps ensure the kind of
robust applications that contribute to what is
called mission-critical computing or
business-critical computing.
17Review
- To catch an exception, code must be enclosed in
a - a. throws block.
- b. catch block.
- c. try block.
- d. finally block.
18Review
- To catch an exception, code must be enclosed in
a - a. throws block.
- b. catch block.
- c. try block.
- d. finally block.
19Review
- An uncaught exception
- a. is a possible exception that never actually
occurs during the execution of the program. - b. is an exception that occurs for which the
matching catch clause is empty. - c. is an exception that occurs for which there
are no matching catch clauses. - d. is another term for a thrown exception
20Review
- An uncaught exception
- a. is a possible exception that never actually
occurs during the execution of the program. - b. is an exception that occurs for which the
matching catch clause is empty. - c. is an exception that occurs for which there
are no matching catch clauses. - d. is another term for a thrown exception
21Getting Information
- There are two methods we can call to get
information about the thrown exception - getMessage
- printStackTrace
22printStackTrace, getStackTrace and getMessage
- Methods in class Throwable retrieve more
information about an exception - printStackTrace outputs stack trace to standard
error stream - getStackTrace retrieves stack trace information
as an array of StackTraceElement objects enables
custom processing of the exception information - getMessage returns the descriptive string
stored in an exception
23Multiple catch Blocks
- A single try-catch statement can include multiple
catch blocks, one for each type of exception.
24Multiple catch Control Flow
25The finally Block
- There are situations where we need to take
certain actions regardless of whether an
exception is thrown or not. - We place statements that must be executed
regardless of exceptions in the finally block.
26try-catch-finally Control Flow
27Propagating Exceptions
- Instead of catching a thrown exception by using
the try-catch statement, we can propagate the
thrown exception back to the caller of our
method. - The method header includes the reserved word
throws.
28Throwing Exceptions
- We can write a method that throws an exception
directly, i.e., this method is the origin of the
exception. - Use the throw reserved to create a new instance
of the Exception or its subclasses. - The method header includes the reserved word
throws.
29Sample Call Sequence
30Exception Thrower
- When a method may throw an exception, either
directly or indirectly, we call the method an
exception thrower. - Every exception thrower must be one of two types
- catcher.
- propagator.
31Review
- Which of the following is not true regarding the
throw point of an exception? - a. It specifies the point at which the exception
must be handled. - b. It is the initial point at which the exception
occurs. - c. It is specified as the top row of the
method-call stack at the time the exception
occurred. - d. All of the above statements are true.
32Review
- Which of the following is not true regarding the
throw point of an exception? - a. It specifies the point at which the exception
must be handled. - b. It is the initial point at which the exception
occurs. - c. It is specified as the top row of the
method-call stack at the time the exception
occurred. - d. All of the above statements are true.
33Review
- Which of the following is not true regarding the
throw point of an exception? - a. It specifies the point at which the exception
must be handled. - b. It is the initial point at which the exception
occurs. - c. It is specified as the top row of the
method-call stack at the time the exception
occurred. - d. All of the above statements are true.
34Review question
- Which of the following statements is not true?
- a. Exception handling enables programmers to
write robust and fault-tolerant programs. - b. Exception handling can only catch the
exception but cannot resolve the exception. - c. Exception handling can resolve exceptions.
- d. The Java 2 Platform, Standard Edition,
Version 1.4 introduced the new chained exception
feature.
35Review question
- Which of the following statements is not true?
- a. Exception handling enables programmers to
write robust and fault-tolerant programs. - b. Exception handling can only catch the
exception but cannot resolve the exception. - c. Exception handling can resolve exceptions.
- d. The Java 2 Platform, Standard Edition,
Version 1.4 introduced the new chained exception
feature.
36Debugging 101
- execute your Java program line by line
- examine the value of variables at different
points in the program - How to do
- set a breakpoint in your code so the debugger
suspends execution (double-click in the gray
margin on the left side of the editor ) - choose Run -gt Debug As -gt Java Applications
-
37Types of Exception Throwers
- An exception catcher is an exception thrower that
includes a matching catch block for the thrown
exception. - An exception propagator does not contain a
matching catch block. - A method may be a catcher of one exception and a
propagator of another.
38Using the throws Clause
- throws clause specifies the exceptions a method
may throws - Appears after methods parameter list and before
the methods body - Contains a comma-separated list of exceptions
- Exceptions can be thrown by statements in
methods body of by methods called in methods
body - Exceptions can be of types listed in throws
clause or subclasses
39When to Use Exception Handling
- Exception handling designed to process
synchronous errors - Synchronous errors occur when a statement
executes - Asynchronous errors occur in parallel with and
independent of the programs flow of control
40Java Exception Hierarchy
- All exceptions inherit either directly or
indirectly from class Exception - Exception classes form an inheritance hierarchy
that can be extended - Class Throwable, superclass of Exception
- Only Throwable objects can be used with the
exception-handling mechanism - Has two subclasses Exception and Error
- Class Exception and its subclasses represent
exception situations that can occur in a Java
program and that can be caught by the application - Class Error and its subclasses represent abnormal
situations that could happen in the JVM it is
usually not possible for a program to recover
from Errors
41Portion of class Throwables inheritance
hierarchy.
42Checked/Compiling vs. Unchecked/Running time
- There are two types of exceptions
- Checked/Compiling time
- Unchecked/Run time
- A checked exception is an exception that is
checked at compile time. - All other exceptions are unchecked, or runtime,
exceptions. As the name suggests, they are
detected only at runtime.
43Different Handling Rules
- When calling a method that can throw checked
exceptions - use the try-catch statement and place the call in
the try block, or - modify the method header to include the
appropriate throws clause. - When calling a method that can throw runtime
exceptions, it is optional to use the try-catch
statement or modify the method header to include
a throws clause.
44Handling Checked/Compiling Exceptions
45Handling Unchecked/Runtime Exceptions
46Java Exception Hierarchy
- Two categories of exceptions checked and
unchecked - Checked exceptions
- Exceptions that inherit from class Exception but
not from RuntimeException - Compiler enforces a catch-or-declare requirement
- Compiler checks each method call and method
declaration to determine whether the method
throws checked exceptions. If so, the compiler
ensures that the checked exception is caught or
is declared in a throws clause. If not caught or
declared, compiler error occurs.
47Java Exception Hierarchy
- Unchecked exceptions
- Inherit from class RuntimeException or class
Error - Compiler does not check code to see if exception
is caught or declared - If an unchecked exception occurs and is not
caught, the program terminates or runs with
unexpected results - Can typically be prevented by proper coding
48Java Exception Hierarchy
- catch block catches all exceptions of its type
and subclasses of its type - If there are multiple catch blocks that match a
particular exception type, only the first
matching catch block executes - It makes sense to use a catch block of a
superclass when all the catch blocks for that
classs subclasses will perform the same
functionality
49Outline
50Review
- Exceptions can occur
- a. from the Java Virtual Machine.
- b. through explicitly mentioned code in a try
block. - c. through calls to other methods made in a try
block. - d. All of the above.
51Review
- Exceptions can occur
- a. from the Java Virtual Machine.
- b. through explicitly mentioned code in a try
block. - c. through calls to other methods made in a try
block. - d. All of the above.
52Review
- In the catch block below, what is
nullPointerException? - catch (NullPointerException nullPointerExceptio
n ) -
- System.err.println(nullPointerException)
- // end catch
- a. The type of the exception being caught.
- b. The name of catch blocks exception parameter.
- c. A finally block.
- d. An exception handler.
53Review
- In the catch block below, what is
nullPointerException? - catch (NullPointerException nullPointerExceptio
n ) -
- System.err.println(nullPointerException)
- // end catch
- a. The type of the exception being caught.
- b. The name of catch blocks exception parameter.
- c. A finally block.
- d. An exception handler.
54Throwing Exceptions Using the throw Statement
- throw statement used to throw exceptions
- Programmers can thrown exceptions themselves from
a method if something has gone wrong - throw statement consists of keyword throw
followed by the exception object
55Rethrowing Exceptions
- Exceptions are rethrown when a catch block
decides either that it cannot process the
exception or that it can only partially process
it - Exception is deferred to outer try statement
- Exception is rethrown by using keyword throw
followed by a reference to the exception object
56Stack Unwinding
- Stack unwinding When an exception is thrown but
not caught in a particular scope, the method-call
stack is unwound, and an attempt is made to
catch the exception in the next outer try block.
57Stack Unwinding
- When unwinding occurs
- The method in which the exception was not caught
terminates - All local variables in that method go out of
scope - Control returns to the statement that originally
invoked the method if a try block encloses the
method call, an attempt is made to catch the
exception.
58Declaring New Exception Types
- You can declare your own exception classes that
are specific to the problems that can occur when
another program uses your reusable classes - New exception class must extend an existing
exception class
59Declaring New Exception Types
- Typically contains only two constructors
- One takes no arguments, passes a default
exception messages to the superclass constructor - One that receives a customized exception message
as a string and passes it to the superclass
constructor
60Preconditions and Postconditions
- Preconditions and postconditions are the states
before and after a methods execution - Used to facilitate debugging and improve design
- You should state the preconditions and
postconditions in a comment before the method
declaration
61Preconditions and Postconditions
- Preconditions
- Condition that must be true when the method is
invoked - Describe method parameters and any other
expectations the method has about the current
state of a program - If preconditions not met, methods behavior is
undefined
62Preconditions and Postconditions
- Postconditions
- Condition that is true after the method
successfully returns - Describe the return value and any other
side-effects the method may have - When calling a method, you may assume that a
method fulfills all of its postconditions
63Assertions
- Assertions are conditions that should be true at
a particular point in a method - Help ensure a programs validity by catching
potential bugs - Preconditions and Postconditions are two kinds of
assertions - Assertions can be stated as comments or
assertions can be validated programmatically
using the assert statement
64Assertions
- The syntax for the assert statement is
- assert ltboolean expressiongt
- where ltboolean expressiongt represents the
condition that must be true if the code is
working correctly. - If the expression results in false, an
AssertionError (a subclass of Error) is thrown.
65Sample Use 1
66Second Form
- The assert statement may also take the form
-
- assert ltboolean expressiongt ltexpressiongt
- where ltexpressiongt represents the value passed
as an argument to the constructor of the
AssertionError class. The value serves as the
detailed message of a thrown exception.
67Sample Use 2
68Compiling Programs with Assertions
- Before Java 2 SDK 1.4, the word assert is a valid
nonreserved identifier. In version 1.4 and after,
the word assert is treated as a regular
identifier to ensure compatibility. - To enable the assertion mechanism, compile the
source file using - javac source 1.4 ltsource filegt