SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
1
Java ExceptionJava Exception
HandlingHandling
2
Topics
● What is an Exception?
● What happens when an Exception occurs?
● Benefits of Exception Handling framework
● Catching exceptions with try-catch
● Catching exceptions with finally
● Throwing exceptions
● Rules in exception handling
● Exception class hierarchy
● Checked exception and unchecked exception
● Creating your own exception class
● Assertions
3
What is anWhat is an
Exception?Exception?
4
What is an Exception?
● Exceptional event
● Error that occurs during runtime
● Cause normal program flow to be disrupted
● Examples
– Divide by zero errors
– Accessing the elements of an array beyond its range
– Invalid input
– Hard disk crash
– Opening a non-existent file
– Heap memory exhausted
5
Exception Example
1 class DivByZero {
2 public static void main(String args[]) {
3 System.out.println(3/0);
4 System.out.println(“Pls. print me.”);
5 }
6 }
6
Example: Default Exception
Handling
● Displays this error message
Exception in thread "main"
java.lang.ArithmeticException: / by zero
at DivByZero.main(DivByZero.java:3)
● Default exception handler
– Provided by Java runtime
– Prints out exception description
– Prints the stack trace
● Hierarchy of methods where the exception occurred
– Causes the program to terminate
7
What Happens WhenWhat Happens When
an Exception Occurs?an Exception Occurs?
8
What Happens When an Exception
Occurs?
● When an exception occurs within a method, the
method creates an exception object and hands it off
to the runtime system
– Creating an exception object and handing it to the
runtime system is called “throwing an exception”
– Exception object contains information about the error,
including its type and the state of the program when the
error occurred
9
What Happens When an Exception
Occurs?
●
The runtime system searches the call stack
for a method that contains an exception
handler
10
What Happens When an Exception
Occurs?
● When an appropriate handler is found, the runtime
system passes the exception to the handler
– An exception handler is considered appropriate if the
type of the exception object thrown matches the type that
can be handled by the handler
– The exception handler chosen is said to catch the
exception.
● If the runtime system exhaustively searches all the
methods on the call stack without finding an
appropriate exception handler, the runtime system
(and, consequently, the program) terminates and
uses the default exception handler
11
Searching the Call Stack for
an Exception Handler
12
Benefits of ExceptionBenefits of Exception
Handling FrameworkHandling Framework
13
Benefits of Java Exception
Handling Framework
● Separating Error-Handling code from “regular”
business logic code
● Propagating errors up the call stack
● Grouping and differentiating error types
14
Separating Error Handling Code
from Regular Code
● In traditional programming, error detection,
reporting, and handling often lead to confusing
spaghetti code
● Consider pseudocode method here that reads an
entire file into memory
readFile {
open the file;
determine its size;
allocate that much memory;
read the file into memory;
close the file;
}
15
Traditional Programming: No
separation of error handling code
● In traditional programming, To handle such cases,
the readFile function must have more code to do
error detection, reporting, and handling.
errorCodeType readFile {
initialize errorCode = 0;
open the file;
if (theFileIsOpen) {
determine the length of the file;
if (gotTheFileLength) {
allocate that much memory;
if (gotEnoughMemory) {
read the file into memory;
if (readFailed) {
errorCode = -1;
}
} else {
errorCode = -2;
}
16
Traditional Programming: No
separation of error handling code
●
} else {
errorCode = -3;
}
close the file;
if (theFileDidntClose && errorCode == 0) {
errorCode = -4;
} else {
errorCode = errorCode and -4;
}
} else {
errorCode = -5;
}
return errorCode;
}
17
Separating Error Handling Code
from Regular Code
● Exceptions enable you to write the main flow of
your code and to deal with the exceptional cases
elsewhere
readFile {
try {
open the file;
determine its size;
allocate that much memory;
read the file into memory;
close the file;
} catch (fileOpenFailed) {
doSomething;
} catch (sizeDeterminationFailed) {
doSomething;
} catch (memoryAllocationFailed) {
doSomething;
} catch (readFailed) {
doSomething;
} catch (fileCloseFailed) {
doSomething;
}
}
18
Separating Error Handling Code
from Regular Code
● Note that exceptions don't spare you the effort of
doing the work of detecting, reporting, and handling
errors, but they do help you organize the work more
effectively.
19
Propagating Errors Up the Call Stack
● Suppose that the readFile method is the fourth method in a
series of nested method calls made by the main program:
method1 calls method2, which calls method3, which finally
calls readFile
● Suppose also that method1 is the only method interested in
the errors that might occur within readFile.
method1 {
call method2;
}
method2 {
call method3;
}
method3 {
call readFile;
}
20
Traditional Way of Propagating Errors
method1 {
errorCodeType error;
error = call method2;
if (error)
doErrorProcessing;
else
proceed;
}
errorCodeType method2 {
errorCodeType error;
error = call method3;
if (error)
return error;
else
proceed;
}
errorCodeType method3 {
errorCodeType error;
error = call readFile;
if (error)
return error;
else
proceed;
●
Traditional error-
notification techniques
force method2 and
method3 to propagate
the error codes returned
by readFile up the call
stack until the error
codes finally reach
method1—the only
method that is
interested in them.
21
Using Java Exception Handling
method1 {
try {
call method2;
} catch (exception e) {
doErrorProcessing;
}
}
method2 throws exception {
call method3;
}
method3 throws exception {
call readFile;
}
●
A method can duck any
exceptions thrown
within it, thereby
allowing a method
farther up the call stack
to catch it. Hence, only
the methods that care
about errors have to
worry about detecting
errors
●
Any checked exceptions
that can be thrown
within a method must
be specified in its
throws clause.
22
Grouping and Differentiating Error
Types
● Because all exceptions thrown within a program are
objects, the grouping or categorizing of exceptions
is a natural outcome of the class hierarchy
● An example of a group of related exception classes
in the Java platform are those defined in java.io —
IOException and its descendants
– IOException is the most general and represents any type
of error that can occur when performing I/O
– Its descendants represent more specific errors. For
example, FileNotFoundException means that a file could
not be located on disk.
23
Grouping and Differentiating Error
Types
● A method can write specific handlers that can
handle a very specific exception
● The FileNotFoundException class has no
descendants, so the following handler can handle
only one type of exception.
catch (FileNotFoundException e) {
...
}
24
Grouping and Differentiating Error
Types
● A method can catch an exception based on its
group or general type by specifying any of the
exception's superclasses in the catch statement.
For example, to catch all I/O exceptions, regardless
of their specific type, an exception handler specifies
an IOException argument.
// Catch all I/O exceptions, including
// FileNotFoundException, EOFException, and so on.
catch (IOException e) {
...
}
25
Catching ExceptionsCatching Exceptions
with try-catchwith try-catch
26
Catching Exceptions:
The try-catch Statements
● Syntax:
try {
<code to be monitored for exceptions>
} catch (<ExceptionType1> <ObjName>) {
<handler if ExceptionType1 occurs>
}
...
} catch (<ExceptionTypeN> <ObjName>) {
<handler if ExceptionTypeN occurs>
}
27
Catching Exceptions:
The try-catch Statements
1 class DivByZero {
2 public static void main(String args[]) {
3 try {
4 System.out.println(3/0);
5 System.out.println(“Please print me.”);
6 } catch (ArithmeticException exc) {
7 //Division by zero is an ArithmeticException
8 System.out.println(exc);
9 }
10 System.out.println(“After exception.”);
11 }
12 }
28
Catching Exceptions:
Multiple catch
1 class MultipleCatch {
2 public static void main(String args[]) {
3 try {
4 int den = Integer.parseInt(args[0]);
5 System.out.println(3/den);
6 } catch (ArithmeticException exc) {
7 System.out.println(“Divisor was 0.”);
8 } catch (ArrayIndexOutOfBoundsException exc2) {
9 System.out.println(“Missing argument.”);
10 }
11 System.out.println(“After exception.”);
12 }
13 }
29
Catching Exceptions:
Nested try's
class NestedTryDemo {
public static void main(String args[]){
try {
int a = Integer.parseInt(args[0]);
try {
int b = Integer.parseInt(args[1]);
System.out.println(a/b);
} catch (ArithmeticException e) {
System.out.println(“Div by zero error!");
}
//continued...
30
Catching Exceptions:
Nested try's
} catch (ArrayIndexOutOfBoundsException) {
System.out.println(“Need 2 parameters!");
}
}
}
31
Catching Exceptions:
Nested try's with methods
1 class NestedTryDemo2 {
2 static void nestedTry(String args[]) {
3 try {
4 int a = Integer.parseInt(args[0]);
5 int b = Integer.parseInt(args[1]);
6 System.out.println(a/b);
7 } catch (ArithmeticException e) {
8 System.out.println("Div by zero error!");
9 }
10 }
11 //continued...
32
Catching Exceptions:
Nested try's with methods
12 public static void main(String args[]){
13 try {
14 nestedTry(args);
15 } catch (ArrayIndexOutOfBoundsException e) {
16 System.out.println("Need 2 parameters!");
17 }
18 }
19 }
33
Catching ExceptionsCatching Exceptions
with finallywith finally
34
Catching Exceptions:
The finally Keyword
● Syntax:
try {
<code to be monitored for exceptions>
} catch (<ExceptionType1> <ObjName>) {
<handler if ExceptionType1 occurs>
} ...
} finally {
<code to be executed before the try block ends>
}
● Contains the code for cleaning up after a try or a
catch
35
Catching Exceptions:
The finally Keyword
● Block of code is always executed despite of
different scenarios:
– Forced exit occurs using a return, a continue or a break
statement
– Normal completion
– Caught exception thrown
● Exception was thrown and caught in the method
– Uncaught exception thrown
● Exception thrown was not specified in any catch block in
the method
36
Catching Exceptions:
The finally Keyword
1 class FinallyDemo {
2 static void myMethod(int n) throws Exception{
3 try {
4 switch(n) {
5 case 1: System.out.println("1st case");
6 return;
7 case 3: System.out.println("3rd case");
8 throw new RuntimeException("3!");
9 case 4: System.out.println("4th case");
10 throw new Exception("4!");
11 case 2: System.out.println("2nd case");
12 }
13 //continued...
37
Catching Exceptions:
The finally Keyword
14 } catch (RuntimeException e) {
15 System.out.print("RuntimeException: ");
16 System.out.println(e.getMessage());
17 } finally {
18 System.out.println("try-block entered.");
19 }
20 }
21 //continued...
38
Catching Exceptions:
The finally Keyword
22 public static void main(String args[]){
23 for (int i=1; i<=4; i++) {
24 try {
25 FinallyDemo.myMethod(i);
26 } catch (Exception e){
27 System.out.print("Exception caught: ");
28 System.out.println(e.getMessage());
29 }
30 System.out.println();
31 }
32 }
33 }
39
ThrowingThrowing
ExceptionsExceptions
40
Throwing Exceptions:
The throw Keyword
● Java allows you to throw exceptions (generate
exceptions)
throw <exception object>;
● An exception you throw is an object
– You have to create an exception object in the same way
you create any other object
● Example:
throw new ArithmeticException(“testing...”);
41
Example: Throwing Exceptions
1 class ThrowDemo {
2 public static void main(String args[]){
3 String input = “invalid input”;
4 try {
5 if (input.equals(“invalid input”)) {
6 throw new RuntimeException("throw demo");
7 } else {
8 System.out.println(input);
9 }
10 System.out.println("After throwing");
11 } catch (RuntimeException e) {
12 System.out.println("Exception caught:" + e);
13 }
14 }
15 }
42
Rules in ExceptionRules in Exception
HandlingHandling
43
Rules on Exceptions
● A method is required to either catch or list all
exceptions it might throw
– Except for Error or RuntimeException, or their
subclasses
● If a method may cause an exception to occur but
does not catch it, then it must say so using the
throws keyword
– Applies to checked exceptions only
● Syntax:
<type> <methodName> (<parameterList>)
throws <exceptionList> {
<methodBody>
}
44
Example: Method throwing an
Exception
1 class ThrowingClass {
2 static void meth() throws ClassNotFoundException {
3 throw new ClassNotFoundException ("demo");
4 }
5 }
6 class ThrowsDemo {
7 public static void main(String args[]) {
8 try {
9 ThrowingClass.meth();
10 } catch (ClassNotFoundException e) {
11 System.out.println(e);
12 }
13 }
14 }
45
Exception ClassException Class
HierarchyHierarchy
46
The Error and Exception Classes
● Throwable class
– Root class of exception classes
– Immediate subclasses
● Error
● Exception
● Exception class
– Conditions that user programs can reasonably deal with
– Usually the result of some flaws in the user program
code
– Examples
● Division by zero error
● Array out-of-bounds error
47
The Error and Exception Classes
● Error class
– Used by the Java run-time system to handle errors
occurring in the run-time environment
– Generally beyond the control of user programs
– Examples
● Out of memory errors
● Hard disk crash
48
Exception Classes and Hierarchy
49
Exception Classes and Hierarchy
● Multiple catches should be ordered from subclass
to superclass.
1 class MultipleCatchError {
2 public static void main(String args[]){
3 try {
4 int a = Integer.parseInt(args [0]);
5 int b = Integer.parseInt(args [1]);
6 System.out.println(a/b);
7 } catch (Exception ex) {
8 } catch (ArrayIndexOutOfBoundsException e) {
9 }
10 }
11 }
50
Checked Exceptions &Checked Exceptions &
Unchecked ExceptionsUnchecked Exceptions
51
Checked and Unchecked
Exceptions
● Checked exception
– Java compiler checks if the program either catches or lists the
occurring checked exception
– If not, compiler error will occur
● Unchecked exceptions
– Not subject to compile-time checking for exception handling
– Built-in unchecked exception classes
● Error
● RuntimeException
● Their subclasses
– Handling all these exceptions may make the program cluttered
and may become a nuisance
52
Creating Your OwnCreating Your Own
Exception ClassException Class
53
Creating Your Own Exception
Class
● Steps to follow
– Create a class that extends the RuntimeException or the
Exception class
– Customize the class
● Members and constructors may be added to the class
● Example:
1 class HateStringExp extends RuntimeException {
2 /* some code */
3 }
54
How To Use Your Own Exceptions
1 class TestHateString {
2 public static void main(String args[]) {
3 String input = "invalid input";
4 try {
5 if (input.equals("invalid input")) {
6 throw new HateStringExp();
7 }
8 System.out.println("Accept string.");
9 } catch (HateStringExp e) {
10 System.out.println("Hate string!”);
11 }
12 }
13 }
55
AssertionsAssertions
56
What are Assertions?
● Allow the programmer to find out if an assumption
was met
– Example: month
● Extension of comments wherein the assert
statement informs the person reading the code that
a particular condition should always be satisfied
– Running the program informs you if assertions made are
true or not
– If an assertion is not true, an AssertionError is thrown
● User has the option to turn it off or on at runtime
57
Enabling or Disabling Assertions
● Program with assertions may not work properly if
used by clients not aware that assertions were
used in the code
● Compiling
– With assertion feature:
javac –source 1.4 MyProgram.java
– Without the assertion feature:
javac MyProgram.java
● Enabling assertions:
– Use the –enableassertions or –ea switch.
java –enableassertions MyProgram
58
Assert Syntax
● Two forms:
– Simpler form:
assert <expression1>;
where
● <expression1> is the condition asserted to be true
– Other form:
assert <expression1> : <expression2>;
where
● <expression1> is the condition asserted to be true
● <expression2> is some information helpful in diagnosing why the statement failed
59
Assert Syntax
1 class AgeAssert {
2 public static void main(String args[]) {
3 int age = Integer.parseInt(args[0]);
4 assert(age>0);
5 /* if age is valid (i.e., age>0) */
6 if (age >= 18) {
7 System.out.println(“You're an adult! =)”);
8 }
9 }
10 }
60
Thank You!Thank You!

Más contenido relacionado

La actualidad más candente

Exception handling in java
Exception handling in javaException handling in java
Exception handling in javaARAFAT ISLAM
 
Presentation on-exception-handling
Presentation on-exception-handlingPresentation on-exception-handling
Presentation on-exception-handlingNahian Ahmed
 
Java Exception handling
Java Exception handlingJava Exception handling
Java Exception handlingkamal kotecha
 
Exception Handling in Java
Exception Handling in JavaException Handling in Java
Exception Handling in JavaJava2Blog
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in javapooja kumari
 
Exceptionhandling
ExceptionhandlingExceptionhandling
ExceptionhandlingNuha Noor
 
Java - Exception Handling Concepts
Java - Exception Handling ConceptsJava - Exception Handling Concepts
Java - Exception Handling ConceptsVicter Paul
 
Java - Exception Handling
Java - Exception HandlingJava - Exception Handling
Java - Exception HandlingPrabhdeep Singh
 
L14 exception handling
L14 exception handlingL14 exception handling
L14 exception handlingteach4uin
 
Exception Handling In Java
Exception Handling In JavaException Handling In Java
Exception Handling In Javaparag
 
C# Exceptions Handling
C# Exceptions Handling C# Exceptions Handling
C# Exceptions Handling sharqiyem
 

La actualidad más candente (20)

Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
 
Presentation on-exception-handling
Presentation on-exception-handlingPresentation on-exception-handling
Presentation on-exception-handling
 
Java Exception handling
Java Exception handlingJava Exception handling
Java Exception handling
 
Exception Handling in Java
Exception Handling in JavaException Handling in Java
Exception Handling in Java
 
Java exception
Java exception Java exception
Java exception
 
Exception handling
Exception handlingException handling
Exception handling
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
 
Exception handling in Java
Exception handling in JavaException handling in Java
Exception handling in Java
 
Exceptionhandling
ExceptionhandlingExceptionhandling
Exceptionhandling
 
Java - Exception Handling Concepts
Java - Exception Handling ConceptsJava - Exception Handling Concepts
Java - Exception Handling Concepts
 
Exception handling
Exception handling Exception handling
Exception handling
 
Java - Exception Handling
Java - Exception HandlingJava - Exception Handling
Java - Exception Handling
 
L14 exception handling
L14 exception handlingL14 exception handling
L14 exception handling
 
Exception Handling In Java
Exception Handling In JavaException Handling In Java
Exception Handling In Java
 
Exception handling
Exception handlingException handling
Exception handling
 
java Features
java Featuresjava Features
java Features
 
C# Exceptions Handling
C# Exceptions Handling C# Exceptions Handling
C# Exceptions Handling
 
Exception Handling in Java
Exception Handling in JavaException Handling in Java
Exception Handling in Java
 
Exception handling
Exception handlingException handling
Exception handling
 

Destacado

Destacado (7)

Exception handling
Exception handlingException handling
Exception handling
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
 
12 exception handling
12 exception handling12 exception handling
12 exception handling
 
Exception handling in Java
Exception handling in JavaException handling in Java
Exception handling in Java
 
Exception
ExceptionException
Exception
 
Java Pitfalls and Good-to-Knows
Java Pitfalls and Good-to-KnowsJava Pitfalls and Good-to-Knows
Java Pitfalls and Good-to-Knows
 
Exception Handling Java
Exception Handling JavaException Handling Java
Exception Handling Java
 

Similar a Java exception handling ppt

Javaexceptions
JavaexceptionsJavaexceptions
Javaexceptionsparthu310
 
Exception handling
Exception handlingException handling
Exception handlingzindadili
 
Exceptions overview
Exceptions overviewExceptions overview
Exceptions overviewBharath K
 
exception-handling-in-java.ppt
exception-handling-in-java.pptexception-handling-in-java.ppt
exception-handling-in-java.pptJAYESHRODGE
 
Interface andexceptions
Interface andexceptionsInterface andexceptions
Interface andexceptionssaman Iftikhar
 
exceptionvdffhhhccvvvv-handling-in-java.ppt
exceptionvdffhhhccvvvv-handling-in-java.pptexceptionvdffhhhccvvvv-handling-in-java.ppt
exceptionvdffhhhccvvvv-handling-in-java.pptyjrtytyuu
 
Session 12 - Exception Handling - Part 1
Session 12 - Exception Handling - Part 1Session 12 - Exception Handling - Part 1
Session 12 - Exception Handling - Part 1PawanMM
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in javaKavitha713564
 
Exception Handling - Part 1
Exception Handling - Part 1 Exception Handling - Part 1
Exception Handling - Part 1 Hitesh-Java
 
exception-handling-in-java.ppt unit 2
exception-handling-in-java.ppt unit 2exception-handling-in-java.ppt unit 2
exception-handling-in-java.ppt unit 2thenmozhip8
 
Java -Exception handlingunit-iv
Java -Exception handlingunit-ivJava -Exception handlingunit-iv
Java -Exception handlingunit-ivRubaNagarajan
 
UNIT III 2021R.pptx
UNIT III 2021R.pptxUNIT III 2021R.pptx
UNIT III 2021R.pptxRDeepa9
 
UNIT III 2021R.pptx
UNIT III 2021R.pptxUNIT III 2021R.pptx
UNIT III 2021R.pptxRDeepa9
 

Similar a Java exception handling ppt (20)

Javaexceptions
JavaexceptionsJavaexceptions
Javaexceptions
 
javaexceptions
javaexceptionsjavaexceptions
javaexceptions
 
Unit 5 Java
Unit 5 JavaUnit 5 Java
Unit 5 Java
 
Exception handling
Exception handlingException handling
Exception handling
 
Exception handling
Exception handlingException handling
Exception handling
 
06 exceptions
06 exceptions06 exceptions
06 exceptions
 
Exception Handling.ppt
 Exception Handling.ppt Exception Handling.ppt
Exception Handling.ppt
 
Z blue exception
Z blue   exceptionZ blue   exception
Z blue exception
 
Exceptions overview
Exceptions overviewExceptions overview
Exceptions overview
 
exception-handling-in-java.ppt
exception-handling-in-java.pptexception-handling-in-java.ppt
exception-handling-in-java.ppt
 
Interface andexceptions
Interface andexceptionsInterface andexceptions
Interface andexceptions
 
exceptionvdffhhhccvvvv-handling-in-java.ppt
exceptionvdffhhhccvvvv-handling-in-java.pptexceptionvdffhhhccvvvv-handling-in-java.ppt
exceptionvdffhhhccvvvv-handling-in-java.ppt
 
Session 12 - Exception Handling - Part 1
Session 12 - Exception Handling - Part 1Session 12 - Exception Handling - Part 1
Session 12 - Exception Handling - Part 1
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
 
Exception Handling - Part 1
Exception Handling - Part 1 Exception Handling - Part 1
Exception Handling - Part 1
 
exception-handling-in-java.ppt unit 2
exception-handling-in-java.ppt unit 2exception-handling-in-java.ppt unit 2
exception-handling-in-java.ppt unit 2
 
Java -Exception handlingunit-iv
Java -Exception handlingunit-ivJava -Exception handlingunit-iv
Java -Exception handlingunit-iv
 
UNIT III 2021R.pptx
UNIT III 2021R.pptxUNIT III 2021R.pptx
UNIT III 2021R.pptx
 
UNIT III 2021R.pptx
UNIT III 2021R.pptxUNIT III 2021R.pptx
UNIT III 2021R.pptx
 
Exceptions in java
Exceptions in javaExceptions in java
Exceptions in java
 

Último

Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfAyushMahapatra5
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room servicediscovermytutordmt
 
Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfchloefrazer622
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...fonyou31
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajanpragatimahajan3
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...Sapna Thakur
 

Último (20)

Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdf
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room service
 
Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdf
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajan
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
 

Java exception handling ppt

  • 2. 2 Topics ● What is an Exception? ● What happens when an Exception occurs? ● Benefits of Exception Handling framework ● Catching exceptions with try-catch ● Catching exceptions with finally ● Throwing exceptions ● Rules in exception handling ● Exception class hierarchy ● Checked exception and unchecked exception ● Creating your own exception class ● Assertions
  • 3. 3 What is anWhat is an Exception?Exception?
  • 4. 4 What is an Exception? ● Exceptional event ● Error that occurs during runtime ● Cause normal program flow to be disrupted ● Examples – Divide by zero errors – Accessing the elements of an array beyond its range – Invalid input – Hard disk crash – Opening a non-existent file – Heap memory exhausted
  • 5. 5 Exception Example 1 class DivByZero { 2 public static void main(String args[]) { 3 System.out.println(3/0); 4 System.out.println(“Pls. print me.”); 5 } 6 }
  • 6. 6 Example: Default Exception Handling ● Displays this error message Exception in thread "main" java.lang.ArithmeticException: / by zero at DivByZero.main(DivByZero.java:3) ● Default exception handler – Provided by Java runtime – Prints out exception description – Prints the stack trace ● Hierarchy of methods where the exception occurred – Causes the program to terminate
  • 7. 7 What Happens WhenWhat Happens When an Exception Occurs?an Exception Occurs?
  • 8. 8 What Happens When an Exception Occurs? ● When an exception occurs within a method, the method creates an exception object and hands it off to the runtime system – Creating an exception object and handing it to the runtime system is called “throwing an exception” – Exception object contains information about the error, including its type and the state of the program when the error occurred
  • 9. 9 What Happens When an Exception Occurs? ● The runtime system searches the call stack for a method that contains an exception handler
  • 10. 10 What Happens When an Exception Occurs? ● When an appropriate handler is found, the runtime system passes the exception to the handler – An exception handler is considered appropriate if the type of the exception object thrown matches the type that can be handled by the handler – The exception handler chosen is said to catch the exception. ● If the runtime system exhaustively searches all the methods on the call stack without finding an appropriate exception handler, the runtime system (and, consequently, the program) terminates and uses the default exception handler
  • 11. 11 Searching the Call Stack for an Exception Handler
  • 12. 12 Benefits of ExceptionBenefits of Exception Handling FrameworkHandling Framework
  • 13. 13 Benefits of Java Exception Handling Framework ● Separating Error-Handling code from “regular” business logic code ● Propagating errors up the call stack ● Grouping and differentiating error types
  • 14. 14 Separating Error Handling Code from Regular Code ● In traditional programming, error detection, reporting, and handling often lead to confusing spaghetti code ● Consider pseudocode method here that reads an entire file into memory readFile { open the file; determine its size; allocate that much memory; read the file into memory; close the file; }
  • 15. 15 Traditional Programming: No separation of error handling code ● In traditional programming, To handle such cases, the readFile function must have more code to do error detection, reporting, and handling. errorCodeType readFile { initialize errorCode = 0; open the file; if (theFileIsOpen) { determine the length of the file; if (gotTheFileLength) { allocate that much memory; if (gotEnoughMemory) { read the file into memory; if (readFailed) { errorCode = -1; } } else { errorCode = -2; }
  • 16. 16 Traditional Programming: No separation of error handling code ● } else { errorCode = -3; } close the file; if (theFileDidntClose && errorCode == 0) { errorCode = -4; } else { errorCode = errorCode and -4; } } else { errorCode = -5; } return errorCode; }
  • 17. 17 Separating Error Handling Code from Regular Code ● Exceptions enable you to write the main flow of your code and to deal with the exceptional cases elsewhere readFile { try { open the file; determine its size; allocate that much memory; read the file into memory; close the file; } catch (fileOpenFailed) { doSomething; } catch (sizeDeterminationFailed) { doSomething; } catch (memoryAllocationFailed) { doSomething; } catch (readFailed) { doSomething; } catch (fileCloseFailed) { doSomething; } }
  • 18. 18 Separating Error Handling Code from Regular Code ● Note that exceptions don't spare you the effort of doing the work of detecting, reporting, and handling errors, but they do help you organize the work more effectively.
  • 19. 19 Propagating Errors Up the Call Stack ● Suppose that the readFile method is the fourth method in a series of nested method calls made by the main program: method1 calls method2, which calls method3, which finally calls readFile ● Suppose also that method1 is the only method interested in the errors that might occur within readFile. method1 { call method2; } method2 { call method3; } method3 { call readFile; }
  • 20. 20 Traditional Way of Propagating Errors method1 { errorCodeType error; error = call method2; if (error) doErrorProcessing; else proceed; } errorCodeType method2 { errorCodeType error; error = call method3; if (error) return error; else proceed; } errorCodeType method3 { errorCodeType error; error = call readFile; if (error) return error; else proceed; ● Traditional error- notification techniques force method2 and method3 to propagate the error codes returned by readFile up the call stack until the error codes finally reach method1—the only method that is interested in them.
  • 21. 21 Using Java Exception Handling method1 { try { call method2; } catch (exception e) { doErrorProcessing; } } method2 throws exception { call method3; } method3 throws exception { call readFile; } ● A method can duck any exceptions thrown within it, thereby allowing a method farther up the call stack to catch it. Hence, only the methods that care about errors have to worry about detecting errors ● Any checked exceptions that can be thrown within a method must be specified in its throws clause.
  • 22. 22 Grouping and Differentiating Error Types ● Because all exceptions thrown within a program are objects, the grouping or categorizing of exceptions is a natural outcome of the class hierarchy ● An example of a group of related exception classes in the Java platform are those defined in java.io — IOException and its descendants – IOException is the most general and represents any type of error that can occur when performing I/O – Its descendants represent more specific errors. For example, FileNotFoundException means that a file could not be located on disk.
  • 23. 23 Grouping and Differentiating Error Types ● A method can write specific handlers that can handle a very specific exception ● The FileNotFoundException class has no descendants, so the following handler can handle only one type of exception. catch (FileNotFoundException e) { ... }
  • 24. 24 Grouping and Differentiating Error Types ● A method can catch an exception based on its group or general type by specifying any of the exception's superclasses in the catch statement. For example, to catch all I/O exceptions, regardless of their specific type, an exception handler specifies an IOException argument. // Catch all I/O exceptions, including // FileNotFoundException, EOFException, and so on. catch (IOException e) { ... }
  • 26. 26 Catching Exceptions: The try-catch Statements ● Syntax: try { <code to be monitored for exceptions> } catch (<ExceptionType1> <ObjName>) { <handler if ExceptionType1 occurs> } ... } catch (<ExceptionTypeN> <ObjName>) { <handler if ExceptionTypeN occurs> }
  • 27. 27 Catching Exceptions: The try-catch Statements 1 class DivByZero { 2 public static void main(String args[]) { 3 try { 4 System.out.println(3/0); 5 System.out.println(“Please print me.”); 6 } catch (ArithmeticException exc) { 7 //Division by zero is an ArithmeticException 8 System.out.println(exc); 9 } 10 System.out.println(“After exception.”); 11 } 12 }
  • 28. 28 Catching Exceptions: Multiple catch 1 class MultipleCatch { 2 public static void main(String args[]) { 3 try { 4 int den = Integer.parseInt(args[0]); 5 System.out.println(3/den); 6 } catch (ArithmeticException exc) { 7 System.out.println(“Divisor was 0.”); 8 } catch (ArrayIndexOutOfBoundsException exc2) { 9 System.out.println(“Missing argument.”); 10 } 11 System.out.println(“After exception.”); 12 } 13 }
  • 29. 29 Catching Exceptions: Nested try's class NestedTryDemo { public static void main(String args[]){ try { int a = Integer.parseInt(args[0]); try { int b = Integer.parseInt(args[1]); System.out.println(a/b); } catch (ArithmeticException e) { System.out.println(“Div by zero error!"); } //continued...
  • 30. 30 Catching Exceptions: Nested try's } catch (ArrayIndexOutOfBoundsException) { System.out.println(“Need 2 parameters!"); } } }
  • 31. 31 Catching Exceptions: Nested try's with methods 1 class NestedTryDemo2 { 2 static void nestedTry(String args[]) { 3 try { 4 int a = Integer.parseInt(args[0]); 5 int b = Integer.parseInt(args[1]); 6 System.out.println(a/b); 7 } catch (ArithmeticException e) { 8 System.out.println("Div by zero error!"); 9 } 10 } 11 //continued...
  • 32. 32 Catching Exceptions: Nested try's with methods 12 public static void main(String args[]){ 13 try { 14 nestedTry(args); 15 } catch (ArrayIndexOutOfBoundsException e) { 16 System.out.println("Need 2 parameters!"); 17 } 18 } 19 }
  • 34. 34 Catching Exceptions: The finally Keyword ● Syntax: try { <code to be monitored for exceptions> } catch (<ExceptionType1> <ObjName>) { <handler if ExceptionType1 occurs> } ... } finally { <code to be executed before the try block ends> } ● Contains the code for cleaning up after a try or a catch
  • 35. 35 Catching Exceptions: The finally Keyword ● Block of code is always executed despite of different scenarios: – Forced exit occurs using a return, a continue or a break statement – Normal completion – Caught exception thrown ● Exception was thrown and caught in the method – Uncaught exception thrown ● Exception thrown was not specified in any catch block in the method
  • 36. 36 Catching Exceptions: The finally Keyword 1 class FinallyDemo { 2 static void myMethod(int n) throws Exception{ 3 try { 4 switch(n) { 5 case 1: System.out.println("1st case"); 6 return; 7 case 3: System.out.println("3rd case"); 8 throw new RuntimeException("3!"); 9 case 4: System.out.println("4th case"); 10 throw new Exception("4!"); 11 case 2: System.out.println("2nd case"); 12 } 13 //continued...
  • 37. 37 Catching Exceptions: The finally Keyword 14 } catch (RuntimeException e) { 15 System.out.print("RuntimeException: "); 16 System.out.println(e.getMessage()); 17 } finally { 18 System.out.println("try-block entered."); 19 } 20 } 21 //continued...
  • 38. 38 Catching Exceptions: The finally Keyword 22 public static void main(String args[]){ 23 for (int i=1; i<=4; i++) { 24 try { 25 FinallyDemo.myMethod(i); 26 } catch (Exception e){ 27 System.out.print("Exception caught: "); 28 System.out.println(e.getMessage()); 29 } 30 System.out.println(); 31 } 32 } 33 }
  • 40. 40 Throwing Exceptions: The throw Keyword ● Java allows you to throw exceptions (generate exceptions) throw <exception object>; ● An exception you throw is an object – You have to create an exception object in the same way you create any other object ● Example: throw new ArithmeticException(“testing...”);
  • 41. 41 Example: Throwing Exceptions 1 class ThrowDemo { 2 public static void main(String args[]){ 3 String input = “invalid input”; 4 try { 5 if (input.equals(“invalid input”)) { 6 throw new RuntimeException("throw demo"); 7 } else { 8 System.out.println(input); 9 } 10 System.out.println("After throwing"); 11 } catch (RuntimeException e) { 12 System.out.println("Exception caught:" + e); 13 } 14 } 15 }
  • 42. 42 Rules in ExceptionRules in Exception HandlingHandling
  • 43. 43 Rules on Exceptions ● A method is required to either catch or list all exceptions it might throw – Except for Error or RuntimeException, or their subclasses ● If a method may cause an exception to occur but does not catch it, then it must say so using the throws keyword – Applies to checked exceptions only ● Syntax: <type> <methodName> (<parameterList>) throws <exceptionList> { <methodBody> }
  • 44. 44 Example: Method throwing an Exception 1 class ThrowingClass { 2 static void meth() throws ClassNotFoundException { 3 throw new ClassNotFoundException ("demo"); 4 } 5 } 6 class ThrowsDemo { 7 public static void main(String args[]) { 8 try { 9 ThrowingClass.meth(); 10 } catch (ClassNotFoundException e) { 11 System.out.println(e); 12 } 13 } 14 }
  • 46. 46 The Error and Exception Classes ● Throwable class – Root class of exception classes – Immediate subclasses ● Error ● Exception ● Exception class – Conditions that user programs can reasonably deal with – Usually the result of some flaws in the user program code – Examples ● Division by zero error ● Array out-of-bounds error
  • 47. 47 The Error and Exception Classes ● Error class – Used by the Java run-time system to handle errors occurring in the run-time environment – Generally beyond the control of user programs – Examples ● Out of memory errors ● Hard disk crash
  • 49. 49 Exception Classes and Hierarchy ● Multiple catches should be ordered from subclass to superclass. 1 class MultipleCatchError { 2 public static void main(String args[]){ 3 try { 4 int a = Integer.parseInt(args [0]); 5 int b = Integer.parseInt(args [1]); 6 System.out.println(a/b); 7 } catch (Exception ex) { 8 } catch (ArrayIndexOutOfBoundsException e) { 9 } 10 } 11 }
  • 50. 50 Checked Exceptions &Checked Exceptions & Unchecked ExceptionsUnchecked Exceptions
  • 51. 51 Checked and Unchecked Exceptions ● Checked exception – Java compiler checks if the program either catches or lists the occurring checked exception – If not, compiler error will occur ● Unchecked exceptions – Not subject to compile-time checking for exception handling – Built-in unchecked exception classes ● Error ● RuntimeException ● Their subclasses – Handling all these exceptions may make the program cluttered and may become a nuisance
  • 52. 52 Creating Your OwnCreating Your Own Exception ClassException Class
  • 53. 53 Creating Your Own Exception Class ● Steps to follow – Create a class that extends the RuntimeException or the Exception class – Customize the class ● Members and constructors may be added to the class ● Example: 1 class HateStringExp extends RuntimeException { 2 /* some code */ 3 }
  • 54. 54 How To Use Your Own Exceptions 1 class TestHateString { 2 public static void main(String args[]) { 3 String input = "invalid input"; 4 try { 5 if (input.equals("invalid input")) { 6 throw new HateStringExp(); 7 } 8 System.out.println("Accept string."); 9 } catch (HateStringExp e) { 10 System.out.println("Hate string!”); 11 } 12 } 13 }
  • 56. 56 What are Assertions? ● Allow the programmer to find out if an assumption was met – Example: month ● Extension of comments wherein the assert statement informs the person reading the code that a particular condition should always be satisfied – Running the program informs you if assertions made are true or not – If an assertion is not true, an AssertionError is thrown ● User has the option to turn it off or on at runtime
  • 57. 57 Enabling or Disabling Assertions ● Program with assertions may not work properly if used by clients not aware that assertions were used in the code ● Compiling – With assertion feature: javac –source 1.4 MyProgram.java – Without the assertion feature: javac MyProgram.java ● Enabling assertions: – Use the –enableassertions or –ea switch. java –enableassertions MyProgram
  • 58. 58 Assert Syntax ● Two forms: – Simpler form: assert <expression1>; where ● <expression1> is the condition asserted to be true – Other form: assert <expression1> : <expression2>; where ● <expression1> is the condition asserted to be true ● <expression2> is some information helpful in diagnosing why the statement failed
  • 59. 59 Assert Syntax 1 class AgeAssert { 2 public static void main(String args[]) { 3 int age = Integer.parseInt(args[0]); 4 assert(age>0); 5 /* if age is valid (i.e., age>0) */ 6 if (age >= 18) { 7 System.out.println(“You're an adult! =)”); 8 } 9 } 10 }