SlideShare a Scribd company logo
1
EXCEPTION HANDELING
MECHANISM-2023EV080
BY
JAYAPRIYA R
CSE
Exception-Handling Overview
2
Show runtime error
Fix it using an if statement
With a method
Run
Quotient
Run
QuotientWithIf
Run
QuotientWithMethod
Exception Advantages
3
Now you see the advantages of using exception handling.
It enables a method to throw an exception to its caller.
Without this capability, a method must handle the
exception or terminate the program.
Run
QuotientWithException
Handling Input Mismatch Exception
4
By handling InputMismatchException, your program will
continuously read an input until it is correct.
Run
InputMismatchExceptionDemo
Exception Types
5
LinkageError
Error
Throwable
ClassNotFoundException
VirtualMachineError
IOException
Exception
RuntimeException
Object
ArithmeticException
NullPointerException
IndexOutOfBoundsException
Many more classes
Many more classes
Many more classes
IllegalArgumentException
System Errors
6
LinkageError
Error
Throwable
ClassNotFoundException
VirtualMachineError
IOException
Exception
RuntimeException
Object
ArithmeticException
NullPointerException
IndexOutOfBoundsException
Many more classes
Many more classes
Many more classes
IllegalArgumentException
System errors are thrown by JVM
and represented in the Error class.
The Error class describes internal
system errors. Such errors rarely
occur. If one does, there is little
you can do beyond notifying the
user and trying to terminate the
program gracefully.
Exceptions
7
LinkageError
Error
Throwable
ClassNotFoundException
VirtualMachineError
IOException
Exception
RuntimeException
Object
ArithmeticException
NullPointerException
IndexOutOfBoundsException
Many more classes
Many more classes
Many more classes
IllegalArgumentException
Exception describes errors
caused by your program
and external
circumstances. These
errors can be caught and
handled by your program.
Runtime Exceptions
8
LinkageError
Error
Throwable
ClassNotFoundException
VirtualMachineError
IOException
Exception
RuntimeException
Object
ArithmeticException
NullPointerException
IndexOutOfBoundsException
Many more classes
Many more classes
Many more classes
IllegalArgumentException
RuntimeException is caused by
programming errors, such as bad
casting, accessing an out-of-bounds
array, and numeric errors.
Checked Exceptions vs. Unchecked
Exceptions
9
RuntimeException, Error and their subclasses are
known as unchecked exceptions. All other
exceptions are known as checked exceptions,
meaning that the compiler forces the programmer
to check and deal with the exceptions.
Unchecked Exceptions
10
In most cases, unchecked exceptions reflect programming
logic errors that are not recoverable. For example, a
NullPointerException is thrown if you access an object
through a reference variable before an object is assigned to
it; an IndexOutOfBoundsException is thrown if you access
an element in an array outside the bounds of the array.
These are the logic errors that should be corrected in the
program. Unchecked exceptions can occur anywhere in the
program. To avoid cumbersome overuse of try-catch
blocks, Java does not mandate you to write code to catch
unchecked exceptions.
Unchecked Exceptions
11
LinkageError
Error
Throwable
ClassNotFoundException
VirtualMachineError
IOException
Exception
RuntimeException
Object
ArithmeticException
NullPointerException
IndexOutOfBoundsException
Many more classes
Many more classes
Many more classes
IllegalArgumentException
Unchecked
exception.
Declaring, Throwing, and Catching
Exceptions
12
method1() {
try {
invoke method2;
}
catch (Exception ex) {
Process exception;
}
}
method2() throws Exception {
if (an error occurs) {
throw new Exception();
}
}
catch exception throw exception
declare exception
Declaring Exceptions
Every method must state the types of checked exceptions it might throw.
This is known as declaring exceptions.
public void myMethod()
throws IOException
public void myMethod()
throws IOException, OtherException
13
Throwing Exceptions
When the program detects an error, the program can create an instance of an
appropriate exception type and throw it. This is known as throwing an
exception. Here is an example,
throw new TheException();
TheException ex = new TheException();
throw ex;
14
Throwing Exceptions Example
/** Set a new radius */
public void setRadius(double newRadius)
throws IllegalArgumentException {
if (newRadius >= 0)
radius = newRadius;
else
throw new IllegalArgumentException(
"Radius cannot be negative");
}
15
Catching Exceptions
try {
statements; // Statements that may throw exceptions
}
catch (Exception1 exVar1) {
handler for exception1;
}
catch (Exception2 exVar2) {
handler for exception2;
}
...
catch (ExceptionN exVar3) {
handler for exceptionN;
}
16
Catching Exceptions
17
try
catch
try
catch
try
catch
An exception
is thrown in
method3
Call Stack
main method main method
method1
main method
method1
main method
method1
method2 method2
method3
Catch or Declare Checked Exceptions
Suppose p2 is defined as follows:
18
void p2() throws IOException {
if (a file does not exist) {
throw new IOException("File does not exist");
}
...
}
Catch or Declare Checked Exceptions
Java forces you to deal with checked exceptions. If a method
declares a checked exception (i.e., an exception other than Error
or RuntimeException), you must invoke it in a try-catch block or
declare to throw the exception in the calling method. For example,
suppose that method p1 invokes method p2 and p2 may throw a
checked exception (e.g., IOException), you have to write the code
as shown in (a) or (b).
19
void p1() {
try {
p2();
}
catch (IOException ex) {
...
}
}
(a) (b)
void p1() throws IOException {
p2();
}
Rethrowing Exceptions
try {
statements;
}
catch(TheException ex) {
perform operations before exits;
throw ex;
}
20
The finally Clause
try {
statements;
}
catch(TheException ex) {
handling ex;
}
finally {
finalStatements;
}
21
Trace a Program Execution
try {
statements;
}
catch(TheException ex) {
handling ex;
}
finally {
finalStatements;
}
Next statement;
22
animation
Suppose no
exceptions in the
statements
Trace a Program Execution
try {
statements;
}
catch(TheException ex) {
handling ex;
}
finally {
finalStatements;
}
Next statement;
23
animation
The final block is
always executed
Trace a Program Execution
try {
statements;
}
catch(TheException ex) {
handling ex;
}
finally {
finalStatements;
}
Next statement;
24
animation
Next statement in the
method is executed
Trace a Program Execution
try {
statement1;
statement2;
statement3;
}
catch(Exception1 ex) {
handling ex;
}
finally {
finalStatements;
}
Next statement;
25
animation
Suppose an exception
of type Exception1 is
thrown in statement2
Trace a Program Execution
try {
statement1;
statement2;
statement3;
}
catch(Exception1 ex) {
handling ex;
}
finally {
finalStatements;
}
Next statement;
26
animation
The exception is
handled.
Trace a Program Execution
try {
statement1;
statement2;
statement3;
}
catch(Exception1 ex) {
handling ex;
}
finally {
finalStatements;
}
Next statement;
27
animation
The final block is
always executed.
Trace a Program Execution
try {
statement1;
statement2;
statement3;
}
catch(Exception1 ex) {
handling ex;
}
finally {
finalStatements;
}
Next statement;
28
animation
The next statement in
the method is now
executed.
Trace a Program Execution
try {
statement1;
statement2;
statement3;
}
catch(Exception1 ex) {
handling ex;
}
catch(Exception2 ex) {
handling ex;
throw ex;
}
finally {
finalStatements;
}
Next statement;
29
animation
statement2 throws an
exception of type
Exception2.
Trace a Program Execution
try {
statement1;
statement2;
statement3;
}
catch(Exception1 ex) {
handling ex;
}
catch(Exception2 ex) {
handling ex;
throw ex;
}
finally {
finalStatements;
}
Next statement;
30
animation
Handling exception
Trace a Program Execution
try {
statement1;
statement2;
statement3;
}
catch(Exception1 ex) {
handling ex;
}
catch(Exception2 ex) {
handling ex;
throw ex;
}
finally {
finalStatements;
}
Next statement;
31
animation
Execute the final block
Trace a Program Execution
try {
statement1;
statement2;
statement3;
}
catch(Exception1 ex) {
handling ex;
}
catch(Exception2 ex) {
handling ex;
throw ex;
}
finally {
finalStatements;
}
Next statement;
32
animation
Rethrow the exception
and control is
transferred to the caller
Cautions When Using Exceptions
 Exception handling separates error-handling code from normal
programming tasks, thus making programs easier to read and to
modify. Be aware, however, that exception handling usually requires
more time and resources because it requires instantiating a new
exception object, rolling back the call stack, and propagating the
errors to the calling methods.
When to Throw Exceptions
An exception occurs in a method. If you want the exception to be
processed by its caller, you should create an exception object and throw
it. If you can handle the exception in the method where it occurs, there
is no need to throw it.
33
When to Use Exceptions
When should you use the try-catch block in the code?
You should use it to deal with unexpected error
conditions. Do not use it to deal with simple, expected
situations. For example, the following code
34
try {
System.out.println(refVar.toString());
}
catch (NullPointerException ex) {
System.out.println("refVar is null");
}
When to Use Exceptions
35
if (refVar != null)
System.out.println(refVar.toString());
else
System.out.println("refVar is null");
Defining Custom Exception Classes
36
 Use the exception classes in the API whenever possible.
 Define custom exception classes if the predefined
classes are not sufficient.
 Define custom exception classes by extending
Exception or a subclass of Exception.
Custom Exception Class Example
37
The setRadius method throws an exception if the radius is negative.
Suppose you wish to pass the radius to the handler, you have to
create a custom exception class.
Run
TestCircleWithRadiusException
CircleWithRadiusException
InvalidRadiusException
Assertions
An assertion is a Java statement that
enables you to assert an assumption
about your program. An assertion
contains a Boolean expression that
should be true during program
execution. Assertions can be used to
assure program correctness and avoid
logic errors.
38
Declaring Assertions
An assertion is declared using the new Java
keyword assert in JDK 1.4 as follows:
assert assertion; or
assert assertion : detailMessage;
where assertion is a Boolean expression and
detailMessage is a primitive-type or an Object
value.
39
Executing Assertions
When an assertion statement is executed, Java evaluates
the assertion. If it is false, an AssertionError will be
thrown. The AssertionError class has a no-arg constructor
and seven overloaded single-argument constructors of
type int, long, float, double, boolean, char, and Object.
For the first assert statement with no detail message, the
no-arg constructor of AssertionError is used. For the
second assert statement with a detail message, an
appropriate AssertionError constructor is used to match
the data type of the message. Since AssertionError is a
subclass of Error, when an assertion becomes false, the
program displays a message on the console and exits.
40
Executing Assertions Example
public class AssertionDemo {
public static void main(String[] args) {
int i; int sum = 0;
for (i = 0; i < 10; i++) {
sum += i;
}
assert i == 10;
assert sum > 10 && sum < 5 * 10 : "sum is " + sum;
}
}
41
Compiling Programs with Assertions
Since assert is a new Java keyword
introduced in JDK 1.4, you have to compile
the program using a JDK 1.4 compiler.
Furthermore, you need to include the
switch –source 1.4 in the compiler command
as follows:
javac –source 1.4 AssertionDemo.java
NOTE: If you use JDK 1.5, there is no need
to use the –source 1.4 option in the
command. 42
Running Programs with Assertions
By default, the assertions are disabled at runtime.
To enable it, use the switch –enableassertions, or
–ea for short, as follows:
java –ea AssertionDemo
Assertions can be selectively enabled or disabled
at class level or package level. The disable switch
is –disableassertions or –da for short. For example,
the following command enables assertions in
package package1 and disables assertions in class
Class1.
java –ea:package1 –da:Class1 AssertionDemo
43
Using Exception Handling or Assertions
Assertion should not be used to replace exception
handling. Exception handling deals with unusual
circumstances during program execution.
Assertions are to assure the correctness of the
program. Exception handling addresses robustness
and assertion addresses correctness. Like
exception handling, assertions are not used for
normal tests, but for internal consistency and
validity checks. Assertions are checked at runtime
and can be turned on or off at startup time.
44
Another good use of assertions is place assertions in
a switch statement without a default case. For
example,
45
switch (month) {
case 1: ... ; break;
case 2: ... ; break;
...
case 12: ... ; break;
default: assert false : "Invalid month: " + month
}
The File Class
The File class is intended to provide an abstraction
that deals with most of the machine-dependent
complexities of files and path names in a machine-
independent fashion. The filename is a string. The File
class is a wrapper class for the file name and its
directory path.
46
Obtaining file properties and manipulating file
47
Reading Data from the Web
Just like you can read data from a file on
your computer, you can read data from a
file on the Web.
48
Reading Data from the Web
URL url = new URL("www.google.com/index.html");
After a URL object is created, you can use the
openStream() method defined in the URL class to
open an input stream and use this stream to create a
Scanner object as follows:
Scanner input = new Scanner(url.openStream());
49
Run
ReadFileFromURL

More Related Content

PPT
Exception handling
PPTX
Exception Handling
PPTX
Exception handling
PPT
Java: Exception
PPT
Exceptions in java
PPSX
Exception hierarchy
PPTX
130410107010 exception handling
PPT
Exception Handling
Exception handling
Exception Handling
Exception handling
Java: Exception
Exceptions in java
Exception hierarchy
130410107010 exception handling
Exception Handling

Similar to JP ASSIGNMENT SERIES PPT.ppt (20)

PDF
Exception Handling.pdf
PPTX
Java-Exception Handling Presentation. 2024
PPTX
Exception Handling In Java Presentation. 2024
PPTX
java exception.pptx
PPTX
Introduction to java exceptions
PPTX
Chap2 exception handling
PPTX
Java-Unit 3- Chap2 exception handling
PPT
Exception and ErrorHandling in Java .ppt
PPTX
Java exception handling
PDF
7_exception.pdf
PPSX
Java Exceptions
PPSX
Java Exceptions Handling
PPTX
12. Java Exceptions and error handling
PPTX
Interface andexceptions
PPTX
Exceptions
PPTX
Exceptions
PPTX
PACKAGES, INTERFACES AND EXCEPTION HANDLING
PPTX
Exceptionhandling
PPT
Chapter13 exception handling
PPT
Java exception
Exception Handling.pdf
Java-Exception Handling Presentation. 2024
Exception Handling In Java Presentation. 2024
java exception.pptx
Introduction to java exceptions
Chap2 exception handling
Java-Unit 3- Chap2 exception handling
Exception and ErrorHandling in Java .ppt
Java exception handling
7_exception.pdf
Java Exceptions
Java Exceptions Handling
12. Java Exceptions and error handling
Interface andexceptions
Exceptions
Exceptions
PACKAGES, INTERFACES AND EXCEPTION HANDLING
Exceptionhandling
Chapter13 exception handling
Java exception
Ad

More from JAYAPRIYAR7 (20)

PPTX
ENVIRONMENTkjnolnkkhbkbkbkbkbkbb PPT.pptx
PDF
sihppt-191112hbihbikbkbkhbikbbhb192529.pdf
PPTX
TECH WARRIORS_SMART BIOSPHERE MONITORING SYSTEM.pptx
PPT
1.5 Energy Resources.ppt
PPTX
1.3 Incremental Model.pptx
PPT
1.1 The nature of software.ppt
PPTX
1.2 Waterfall model.pptx
PPTX
1.4 Prototyping model.pptx
PPTX
1.5 Spiral model.pptx
PPT
Physiology_Endocrinology.ppt
PPTX
ICMRI PPT Template.pptx
PPTX
Indian Space Programme JP PPT.pptx
PPTX
ARCATHON SAMPLE PPT (REFERENCE MODEL).pptx
PPTX
SPEAKING ASSESSMENT PPT .pptx
PPTX
Engineering Students - Idea Submission Template.pptx
PPTX
TECH WARRIORS_INNOVATE FOR SOCIETY.pptx
PPTX
Topic 2_revised.pptx
PPTX
BOB_Sample_PPt_Template_(1).pptx
PDF
coursera1.pdf
PPT
neurotansmitters.ppt
ENVIRONMENTkjnolnkkhbkbkbkbkbkbb PPT.pptx
sihppt-191112hbihbikbkbkhbikbbhb192529.pdf
TECH WARRIORS_SMART BIOSPHERE MONITORING SYSTEM.pptx
1.5 Energy Resources.ppt
1.3 Incremental Model.pptx
1.1 The nature of software.ppt
1.2 Waterfall model.pptx
1.4 Prototyping model.pptx
1.5 Spiral model.pptx
Physiology_Endocrinology.ppt
ICMRI PPT Template.pptx
Indian Space Programme JP PPT.pptx
ARCATHON SAMPLE PPT (REFERENCE MODEL).pptx
SPEAKING ASSESSMENT PPT .pptx
Engineering Students - Idea Submission Template.pptx
TECH WARRIORS_INNOVATE FOR SOCIETY.pptx
Topic 2_revised.pptx
BOB_Sample_PPt_Template_(1).pptx
coursera1.pdf
neurotansmitters.ppt
Ad

Recently uploaded (20)

PPTX
6ME3A-Unit-II-Sensors and Actuators_Handouts.pptx
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PPTX
Sustainable Sites - Green Building Construction
PDF
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
PDF
PREDICTION OF DIABETES FROM ELECTRONIC HEALTH RECORDS
PDF
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
PDF
Well-logging-methods_new................
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PDF
PPT on Performance Review to get promotions
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PPTX
UNIT 4 Total Quality Management .pptx
PPTX
additive manufacturing of ss316l using mig welding
PPTX
Current and future trends in Computer Vision.pptx
PPTX
Artificial Intelligence
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PDF
737-MAX_SRG.pdf student reference guides
6ME3A-Unit-II-Sensors and Actuators_Handouts.pptx
CYBER-CRIMES AND SECURITY A guide to understanding
UNIT-1 - COAL BASED THERMAL POWER PLANTS
Sustainable Sites - Green Building Construction
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
PREDICTION OF DIABETES FROM ELECTRONIC HEALTH RECORDS
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
Well-logging-methods_new................
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PPT on Performance Review to get promotions
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
UNIT 4 Total Quality Management .pptx
additive manufacturing of ss316l using mig welding
Current and future trends in Computer Vision.pptx
Artificial Intelligence
Automation-in-Manufacturing-Chapter-Introduction.pdf
737-MAX_SRG.pdf student reference guides

JP ASSIGNMENT SERIES PPT.ppt

  • 2. Exception-Handling Overview 2 Show runtime error Fix it using an if statement With a method Run Quotient Run QuotientWithIf Run QuotientWithMethod
  • 3. Exception Advantages 3 Now you see the advantages of using exception handling. It enables a method to throw an exception to its caller. Without this capability, a method must handle the exception or terminate the program. Run QuotientWithException
  • 4. Handling Input Mismatch Exception 4 By handling InputMismatchException, your program will continuously read an input until it is correct. Run InputMismatchExceptionDemo
  • 6. System Errors 6 LinkageError Error Throwable ClassNotFoundException VirtualMachineError IOException Exception RuntimeException Object ArithmeticException NullPointerException IndexOutOfBoundsException Many more classes Many more classes Many more classes IllegalArgumentException System errors are thrown by JVM and represented in the Error class. The Error class describes internal system errors. Such errors rarely occur. If one does, there is little you can do beyond notifying the user and trying to terminate the program gracefully.
  • 7. Exceptions 7 LinkageError Error Throwable ClassNotFoundException VirtualMachineError IOException Exception RuntimeException Object ArithmeticException NullPointerException IndexOutOfBoundsException Many more classes Many more classes Many more classes IllegalArgumentException Exception describes errors caused by your program and external circumstances. These errors can be caught and handled by your program.
  • 8. Runtime Exceptions 8 LinkageError Error Throwable ClassNotFoundException VirtualMachineError IOException Exception RuntimeException Object ArithmeticException NullPointerException IndexOutOfBoundsException Many more classes Many more classes Many more classes IllegalArgumentException RuntimeException is caused by programming errors, such as bad casting, accessing an out-of-bounds array, and numeric errors.
  • 9. Checked Exceptions vs. Unchecked Exceptions 9 RuntimeException, Error and their subclasses are known as unchecked exceptions. All other exceptions are known as checked exceptions, meaning that the compiler forces the programmer to check and deal with the exceptions.
  • 10. Unchecked Exceptions 10 In most cases, unchecked exceptions reflect programming logic errors that are not recoverable. For example, a NullPointerException is thrown if you access an object through a reference variable before an object is assigned to it; an IndexOutOfBoundsException is thrown if you access an element in an array outside the bounds of the array. These are the logic errors that should be corrected in the program. Unchecked exceptions can occur anywhere in the program. To avoid cumbersome overuse of try-catch blocks, Java does not mandate you to write code to catch unchecked exceptions.
  • 12. Declaring, Throwing, and Catching Exceptions 12 method1() { try { invoke method2; } catch (Exception ex) { Process exception; } } method2() throws Exception { if (an error occurs) { throw new Exception(); } } catch exception throw exception declare exception
  • 13. Declaring Exceptions Every method must state the types of checked exceptions it might throw. This is known as declaring exceptions. public void myMethod() throws IOException public void myMethod() throws IOException, OtherException 13
  • 14. Throwing Exceptions When the program detects an error, the program can create an instance of an appropriate exception type and throw it. This is known as throwing an exception. Here is an example, throw new TheException(); TheException ex = new TheException(); throw ex; 14
  • 15. Throwing Exceptions Example /** Set a new radius */ public void setRadius(double newRadius) throws IllegalArgumentException { if (newRadius >= 0) radius = newRadius; else throw new IllegalArgumentException( "Radius cannot be negative"); } 15
  • 16. Catching Exceptions try { statements; // Statements that may throw exceptions } catch (Exception1 exVar1) { handler for exception1; } catch (Exception2 exVar2) { handler for exception2; } ... catch (ExceptionN exVar3) { handler for exceptionN; } 16
  • 17. Catching Exceptions 17 try catch try catch try catch An exception is thrown in method3 Call Stack main method main method method1 main method method1 main method method1 method2 method2 method3
  • 18. Catch or Declare Checked Exceptions Suppose p2 is defined as follows: 18 void p2() throws IOException { if (a file does not exist) { throw new IOException("File does not exist"); } ... }
  • 19. Catch or Declare Checked Exceptions Java forces you to deal with checked exceptions. If a method declares a checked exception (i.e., an exception other than Error or RuntimeException), you must invoke it in a try-catch block or declare to throw the exception in the calling method. For example, suppose that method p1 invokes method p2 and p2 may throw a checked exception (e.g., IOException), you have to write the code as shown in (a) or (b). 19 void p1() { try { p2(); } catch (IOException ex) { ... } } (a) (b) void p1() throws IOException { p2(); }
  • 20. Rethrowing Exceptions try { statements; } catch(TheException ex) { perform operations before exits; throw ex; } 20
  • 21. The finally Clause try { statements; } catch(TheException ex) { handling ex; } finally { finalStatements; } 21
  • 22. Trace a Program Execution try { statements; } catch(TheException ex) { handling ex; } finally { finalStatements; } Next statement; 22 animation Suppose no exceptions in the statements
  • 23. Trace a Program Execution try { statements; } catch(TheException ex) { handling ex; } finally { finalStatements; } Next statement; 23 animation The final block is always executed
  • 24. Trace a Program Execution try { statements; } catch(TheException ex) { handling ex; } finally { finalStatements; } Next statement; 24 animation Next statement in the method is executed
  • 25. Trace a Program Execution try { statement1; statement2; statement3; } catch(Exception1 ex) { handling ex; } finally { finalStatements; } Next statement; 25 animation Suppose an exception of type Exception1 is thrown in statement2
  • 26. Trace a Program Execution try { statement1; statement2; statement3; } catch(Exception1 ex) { handling ex; } finally { finalStatements; } Next statement; 26 animation The exception is handled.
  • 27. Trace a Program Execution try { statement1; statement2; statement3; } catch(Exception1 ex) { handling ex; } finally { finalStatements; } Next statement; 27 animation The final block is always executed.
  • 28. Trace a Program Execution try { statement1; statement2; statement3; } catch(Exception1 ex) { handling ex; } finally { finalStatements; } Next statement; 28 animation The next statement in the method is now executed.
  • 29. Trace a Program Execution try { statement1; statement2; statement3; } catch(Exception1 ex) { handling ex; } catch(Exception2 ex) { handling ex; throw ex; } finally { finalStatements; } Next statement; 29 animation statement2 throws an exception of type Exception2.
  • 30. Trace a Program Execution try { statement1; statement2; statement3; } catch(Exception1 ex) { handling ex; } catch(Exception2 ex) { handling ex; throw ex; } finally { finalStatements; } Next statement; 30 animation Handling exception
  • 31. Trace a Program Execution try { statement1; statement2; statement3; } catch(Exception1 ex) { handling ex; } catch(Exception2 ex) { handling ex; throw ex; } finally { finalStatements; } Next statement; 31 animation Execute the final block
  • 32. Trace a Program Execution try { statement1; statement2; statement3; } catch(Exception1 ex) { handling ex; } catch(Exception2 ex) { handling ex; throw ex; } finally { finalStatements; } Next statement; 32 animation Rethrow the exception and control is transferred to the caller
  • 33. Cautions When Using Exceptions  Exception handling separates error-handling code from normal programming tasks, thus making programs easier to read and to modify. Be aware, however, that exception handling usually requires more time and resources because it requires instantiating a new exception object, rolling back the call stack, and propagating the errors to the calling methods. When to Throw Exceptions An exception occurs in a method. If you want the exception to be processed by its caller, you should create an exception object and throw it. If you can handle the exception in the method where it occurs, there is no need to throw it. 33
  • 34. When to Use Exceptions When should you use the try-catch block in the code? You should use it to deal with unexpected error conditions. Do not use it to deal with simple, expected situations. For example, the following code 34 try { System.out.println(refVar.toString()); } catch (NullPointerException ex) { System.out.println("refVar is null"); }
  • 35. When to Use Exceptions 35 if (refVar != null) System.out.println(refVar.toString()); else System.out.println("refVar is null");
  • 36. Defining Custom Exception Classes 36  Use the exception classes in the API whenever possible.  Define custom exception classes if the predefined classes are not sufficient.  Define custom exception classes by extending Exception or a subclass of Exception.
  • 37. Custom Exception Class Example 37 The setRadius method throws an exception if the radius is negative. Suppose you wish to pass the radius to the handler, you have to create a custom exception class. Run TestCircleWithRadiusException CircleWithRadiusException InvalidRadiusException
  • 38. Assertions An assertion is a Java statement that enables you to assert an assumption about your program. An assertion contains a Boolean expression that should be true during program execution. Assertions can be used to assure program correctness and avoid logic errors. 38
  • 39. Declaring Assertions An assertion is declared using the new Java keyword assert in JDK 1.4 as follows: assert assertion; or assert assertion : detailMessage; where assertion is a Boolean expression and detailMessage is a primitive-type or an Object value. 39
  • 40. Executing Assertions When an assertion statement is executed, Java evaluates the assertion. If it is false, an AssertionError will be thrown. The AssertionError class has a no-arg constructor and seven overloaded single-argument constructors of type int, long, float, double, boolean, char, and Object. For the first assert statement with no detail message, the no-arg constructor of AssertionError is used. For the second assert statement with a detail message, an appropriate AssertionError constructor is used to match the data type of the message. Since AssertionError is a subclass of Error, when an assertion becomes false, the program displays a message on the console and exits. 40
  • 41. Executing Assertions Example public class AssertionDemo { public static void main(String[] args) { int i; int sum = 0; for (i = 0; i < 10; i++) { sum += i; } assert i == 10; assert sum > 10 && sum < 5 * 10 : "sum is " + sum; } } 41
  • 42. Compiling Programs with Assertions Since assert is a new Java keyword introduced in JDK 1.4, you have to compile the program using a JDK 1.4 compiler. Furthermore, you need to include the switch –source 1.4 in the compiler command as follows: javac –source 1.4 AssertionDemo.java NOTE: If you use JDK 1.5, there is no need to use the –source 1.4 option in the command. 42
  • 43. Running Programs with Assertions By default, the assertions are disabled at runtime. To enable it, use the switch –enableassertions, or –ea for short, as follows: java –ea AssertionDemo Assertions can be selectively enabled or disabled at class level or package level. The disable switch is –disableassertions or –da for short. For example, the following command enables assertions in package package1 and disables assertions in class Class1. java –ea:package1 –da:Class1 AssertionDemo 43
  • 44. Using Exception Handling or Assertions Assertion should not be used to replace exception handling. Exception handling deals with unusual circumstances during program execution. Assertions are to assure the correctness of the program. Exception handling addresses robustness and assertion addresses correctness. Like exception handling, assertions are not used for normal tests, but for internal consistency and validity checks. Assertions are checked at runtime and can be turned on or off at startup time. 44
  • 45. Another good use of assertions is place assertions in a switch statement without a default case. For example, 45 switch (month) { case 1: ... ; break; case 2: ... ; break; ... case 12: ... ; break; default: assert false : "Invalid month: " + month }
  • 46. The File Class The File class is intended to provide an abstraction that deals with most of the machine-dependent complexities of files and path names in a machine- independent fashion. The filename is a string. The File class is a wrapper class for the file name and its directory path. 46
  • 47. Obtaining file properties and manipulating file 47
  • 48. Reading Data from the Web Just like you can read data from a file on your computer, you can read data from a file on the Web. 48
  • 49. Reading Data from the Web URL url = new URL("www.google.com/index.html"); After a URL object is created, you can use the openStream() method defined in the URL class to open an input stream and use this stream to create a Scanner object as follows: Scanner input = new Scanner(url.openStream()); 49 Run ReadFileFromURL