tues. nov. 25. an exception is an unexpected error or condition, such as ◦ you issue a command to...
TRANSCRIPT
![Page 1: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/1.jpg)
Tues. Nov. 25
![Page 2: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/2.jpg)
An exception is an unexpected error or condition, such as◦ You issue a command to read a file from a disk,
but the file does not exist there◦ You attempt to write data to a disk, but the disk is
full or unformatted◦ Your program asks for user input, but the user
enters invalid data◦ The program attempts to divide a value by 0
![Page 3: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/3.jpg)
These are the object-oriented methods to manage such errors
Java has two basic classes of errors: Error and Exception
Both of these classes descend from the Throwable class, as shown next
![Page 4: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/4.jpg)
Object◦ Throwable
Exception IOException Runtime Exception
ArithmeticException IndexOutOfBoundsException ArrayIndexOutOfBoundsException Others
Error VirtualMachineError
OutofMemoryError InternalError Others…
![Page 5: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/5.jpg)
These are serious errors from which your program cannot recover
Such as, a misspelled class name or a class stored in the wrong folder
If the program cannot find the class, an Error condition occurs
If the program runs out of memory, an Error condition occurs
![Page 6: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/6.jpg)
These are less serious errors that represent unusual conditions that arise while the program is running and from which the program can recover
Examples include using an invalid array subscript or performing certain illegal arithmetic operations
Your program can determine the type of error by examining the code of the error returned by Java
![Page 7: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/7.jpg)
C:\Java\Java xyz.javaerror: cannot read xyz.java1 error
C:\Java\>_
In this case there is no program code you could write that could fix or prevent the error message
![Page 8: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/8.jpg)
When the program generates an exception message, it produces a different type of message
An exception message is one that could have been prevented by writing specific methods in the program
Consider the following program…
![Page 9: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/9.jpg)
public class MathMistake{ public static void main(String[] args) { int num = 13, denom = 0, result; result = num / denom; }}
![Page 10: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/10.jpg)
C:\Java\java MathMistakeException in thread “main”
java.lang.ArithmeticException: / by zero at
MathMistake.main<MathMistake.java:6>
C:\Java>_
The Exception is a java.lang.ArithmeticException which is one of many subclasses of Exception
You are told the type of error as well as the line number of the error
![Page 11: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/11.jpg)
You can simply let the program terminate The termination is abrupt and unforgiving This might annoy the user Or the termination could be disastrous such
as in an air traffic control situation
![Page 12: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/12.jpg)
Consider the following arithmetic (division by 0) error and its various traditional ways of handling the error
![Page 13: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/13.jpg)
public class MathMistake{ public static void main(String[] args) { int num = 13, denom = 0, result;
if(denom == 0)System.exit(1);
result = num / denom; }}
![Page 14: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/14.jpg)
When you use System.exit(), the current application ends and control returns to the operating system
The convention is to return a value of 1 if an error is causing the termination; otherwise, a value of 0 is returnedunder normal termination
Using System.exit() circumvents displaying the error message shown above because the program ends before the the division by zero occurs
![Page 15: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/15.jpg)
When you write code to detect exceptions, you ‘try’ a procedure that might cause an error
A method that detects an exception ‘ throws an exception,’ and the block of code that processes the error ‘catches the exception.’
Programs that can handle exceptions are said to be more fault tolerant and robust◦ Fault-tolerant apps are designed so that they
continue to operate, possibly at a reduced level
![Page 16: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/16.jpg)
When you create a segment of code in which something might go wrong, you place the code in a try block, which is a block of code you attempt to execute while acknowledging that an exception might occur
![Page 17: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/17.jpg)
The keyword catch An opening parenthesis An Exception type A name for an instance of the Exception type A closing parenthesis An opening curly brace The statements that take the action you want A closing curly brace
![Page 18: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/18.jpg)
returnType methodName(optional arguments){ optional statements prior to code that is tried try { //statements that might generate an exception } catch(Exception someException) { // actions to take if exception occurs } // optional statements that occur after try}
![Page 19: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/19.jpg)
In the slide above, someException represents an object of the Exception class or any of its subclasses
If an exception occurs during the execution of the try block, the statements in the catch block execute
If no exception occurs within the try block, the catch block does not execute
Either way the statements following the catch block execute normally
![Page 20: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/20.jpg)
public class MathMistakeCaught{ public static void main(String[] args) { int num = 13, denom = 0, result; try { result = num / denom; } catch(ArithmeticException mistake) { System.out.println("Attempt to divide by zero!"); } }}
![Page 21: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/21.jpg)
C:\Java>java MathMistakeCaught Attempt to divide by zero!
C:\Java>
![Page 22: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/22.jpg)
If you want to send error messages to a different location from ‘normal’ you can use System.err instead of System.out
![Page 23: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/23.jpg)
Lots of different types of errors could have occurred within the try block
You can have the system print the type of error with the following code
![Page 24: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/24.jpg)
public class MathMistakeCaught2{ public static void main(String[] args) { int num = 13, denom = 0, result; try { result = num / denom; } catch(ArithmeticException mistake) { System.out.println(mistake.getMessage()); } }}
![Page 25: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/25.jpg)
Uses the getMessage() method to generate the message that ‘comes with’ the caught ArithmeticException argument to the catch block
![Page 26: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/26.jpg)
C:\Java>java MathMistakeCaught2/ by zero
C:\Java>_
![Page 27: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/27.jpg)
try { result = num / denom; } catch(ArithmeticException mistake) { result = num/1;
System.out.println(mistake.getMessage()); }
![Page 28: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/28.jpg)
Holds a valid value—either the code in the try block worked, or the code in the catch block assigned a valid value to result if the try block did not work
![Page 29: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/29.jpg)
The catch blocks are written so that they look like methods
![Page 30: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/30.jpg)
You can place as many statements as you need within a try block and you can catch as man Exceptions as you want
However, the first such Exception will cause the logic to leave the try block and to enter the catch block
Thus, the first error-generating statement throws an Exception
When a program contains multiple catch blocks, they are examined in sequence until a match is found for the type of Exception that occurred
![Page 31: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/31.jpg)
Then, the matching catch block executes and each remaining catch block is bypassed
For example, consider the code below
![Page 32: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/32.jpg)
public class TwoMistakes{ public static void main(String[] args) { int num[] = {4, 0, 0}; try { num[2] = num[0] / num[1]; num[2] = num[3] / num[0]; } catch(ArithmeticException e) { System.out.println("Arithmetic error"); } catch(IndexOutOfBoundsException e) { System.out.println("Out of bounds error"); } System.out.println("End of program"); }}
![Page 33: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/33.jpg)
C:\Java\java TwoMistakes Arithmetic error End of program
C:\Java>_
Note that the second statement in the try block is never attempted and the second catch block is skipped
![Page 34: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/34.jpg)
public class TwoMistakes2{ public static void main(String[] args) { int num[] = {4, 0, 0}; try { num[2] = num[0] / 10; num[2] = num[3] / num[0]; } catch(ArithmeticException e) { System.out.println("Arithmetic error"); } catch(IndexOutOfBoundsException e) { System.out.println("Out of bounds error"); } System.out.println("End of program");
}}
![Page 35: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/35.jpg)
C:\Java\java TwoMistakes2 Out of bounds error End of program
C:\Java>_
Again, the try block is abandoned, the first catch block is examined and found unsuitable because it does not catch an IndexOutOfBoundsException
The program proceeds to the second catch block
![Page 36: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/36.jpg)
The following program uses only one catch block to catch both ArithmeticExceptions and IndexOutOfBounds exceptions
The above exceptions are both subclasses of Exception
Therefore, the catch blocks shown above can be replaced with a single generic catch block, as shown below
![Page 37: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/37.jpg)
public class TwoMistakes3{ public static void main(String[] args) { int num[] = {4, 0, 0}; try { num[2] = num[0] / num[1]; num[2] = num[3] / num[0]; } catch( Exception e) { System.out.println(e.getMessage()); } }}
![Page 38: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/38.jpg)
Will catch all exceptions When either an arithmetic exception or
array index exception occurs, the thrown exception is ‘promoted’ to an Exception error in the catch block
Because an Exception is Throwable, you can use the Throwable class getMessage() method
![Page 39: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/39.jpg)
If you place a generic catch block first and then specific catch blocks afterwards, the specific catch blocks will possess code that is unreachable because the generic catch block will catch all exceptions before they can be tested against specific catch blocks
Unreachable code statements are program statements that can never execute under any circumstances.
Try blocks should not throw more than four exception types
![Page 40: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/40.jpg)
finally blocks follow catch blocks and are used to cleanup after try and catch blocks regardless of whether an exception occurred or not
![Page 41: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/41.jpg)
Try{ // statements of try}catch(Exception e){ // actions taken if exception was thrown}finally{ // actions taken whether catch block executed or not}
![Page 42: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/42.jpg)
There is a System.exit(); statement in either the try block or the catch block
An unplanned Exception occurs When an unplanned Exception occurs, the
application is stopped and control is returned to the operating system where the Exception is handled—the program is abandoned
![Page 43: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/43.jpg)
try{ // Open the file // Read the file // Place the file data in an array // Calculate an average from the data // Display the average}catch(IOException e){ // Issue an error message // System exit}finally{ // if file is open, close it}
![Page 44: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/44.jpg)
The advantage of exception handling is that it enables you to create a fix-up for the exception and to permit the program to continue
It also simplifies exception handling overall
![Page 45: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/45.jpg)
call methodA()If methodA() worked
{call methodB()if methodB() worked{
call methodC()if methodC() worked
Everything is OK so print final result
elseSet errorCode to ‘C’
}else
Set errorCodee to ‘B”
}else
Set errorCode to ‘A’}
![Page 46: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/46.jpg)
try{ call methodA() and maybe throw an exception call methodB() and maybe throw an exception call methodC() and maybe throw an exception}Catch(methodA()’s error){ set errorCode to ‘A’}Catch(methodB()’s error){ set errorCode to ‘B’}Catch(methodC()’s error){ set errorCode to ‘C’}
![Page 47: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/47.jpg)
Logic is much simplier Reusability of the method is much better
If a method throws an exception that will not be caught inside the method, you must use the keyword throws followed by an Exception type in the method header
Consider the following code…
![Page 48: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/48.jpg)
Public class PriceList{ private static final double[] price =
{15.99,27.88,34.56,45.89}; public static void displayPrice(int item) throws IndexOutOfBoundsException { System.out.println(“The price is” +
price[item]; }}
![Page 49: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/49.jpg)
public class PriceListApplication1{ public static void main(String[] args) { int item = 4; try { PriceList.displayPrice(item); } catch(IndexOutOfBoundsException e) { System.out.println("Price is $0"); } }}
![Page 50: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/50.jpg)
import javax.swing.*;public class PriceListApplication2{ public static void main(String[] args) { int item = 4; try { PriceList.displayPrice(item); } catch(IndexOutOfBoundsException e) { while(item < 0 || item > 3) { String answer = JOptionPane.showInputDialog(null, "Please reenter a value 0, 1, 2 or 3"); item = Integer.parseInt(answer); } PriceList.displayPrice(item); } System.exit(0); }}
![Page 51: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/51.jpg)
Java’s exceptions come in two types:◦ Checked exceptions—the type programmers
should be detecting and recovering from◦ Unchecked exceptions—don’t mess with these
Programmers usually cannot anticipate unchecked exceptions, which are◦ Hardware failures◦ Logic errors◦ [programs cannot fix these]
Programs can only fix checked exceptions while it is executing
![Page 52: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/52.jpg)
All exceptions that you specifically throw are checked exceptions
These descend from the Exception class These are not runtime exceptions
![Page 53: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/53.jpg)
Catch it in the method Declare the exception in your method
header’s throws clause If you use the latter, then any programmer
who uses your method must do one of the following:◦ Catch and handle the exception◦ Declare the exception in the throws clause of
their method
![Page 54: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/54.jpg)
The method’s return type The type and number of arguments the
method requires The type and number of Exceptions the
method throws
Why don’t you have to know what other methods the method extends from and what other methods the method implements?
![Page 55: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/55.jpg)
When an exception occurs, Java will trace back through the call stack looking for a catch in each of the methods
If none is found, control returns to the operating system
Consider the following program…
![Page 56: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/56.jpg)
import javax.swing.*;public class DemoStackTrace{ public static void main(String[] args) { methodA(); // line 6 } public static void methodA() { System.out.println("In methodA()"); methodB(); // line 11 } public static void methodB() { System.out.println("In methodB()"); methodC(); // line 16 } public static void methodC() { System.out.println("In methodC()"); JFrame frame = null; frame.setVisible(true); // line 22 }}
![Page 57: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/57.jpg)
C:\Java>java DemoStackTraceIn methodA()In methodB()In methodC()Exception in thread “main” java.lang.nullPointerException at DemoStrackTrace.methodC(DemoStackTrace.java:22) at DemoStrackTrace.methodB(DemoStackTrace.java:16) at DemoStrackTrace.methodA(DemoStackTrace.java:11) at DemoStrackTrace.main(DemoStackTrace.java:6) C:\Java>
![Page 58: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/58.jpg)
import javax.swing.*;public class DemoStackTrace2{ public static void main(String[] args) { methodA(); // line 6 } public static void methodA() { System.out.println("In methodA()"); try { methodB(); // line 13 } catch(RuntimeException e) { System.out.println("In methodA() - The stack trace:"); e.printStackTrace(); } System.out.println("Method ends normally."); System.out.println("Application could continue here."); } public static void methodB() { System.out.println("In methodB()"); methodC(); // line 26 } public static void methodC() { System.out.println("In methodC()"); JFrame frame = null; frame.setVisible(true); // line 32 }}
![Page 59: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/59.jpg)
C:\Java>java DemoStackTraceIn methodA()In methodB()In methodC()In methodA() – The stack trace:java.lang.nullPointerException at DemoStrackTrace.methodC(DemoStackTrace.java:32) at DemoStrackTrace.methodB(DemoStackTrace.java:26) at DemoStrackTrace.methodA(DemoStackTrace.java:13) at DemoStrackTrace.main(DemoStackTrace.java:6)Method ends normally.Application could continue here.
C:\Java>
![Page 60: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/60.jpg)
Java provides over 40 categories of Exceptions that you can use in your programs
But Java cannot anticipate all of the possible exceptions you might want to catch◦ Ex. A negative bank balance◦ Ex. Someone tries to access your email
To create your own throwable Exception, you must extend a subclass of Throwable.
The class Throwable has two subclasses—Exception and Error
![Page 61: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/61.jpg)
Exception() – constructs a new exception with null as its detail message
Exception(String message) – constructs a new exception with the specified detail message
Exception(String message, Throwable cause) – constructs a new exception with the specified detail message and cause
Exception(Throwable cause) – constructs a new exception with the specified cause
![Page 62: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/62.jpg)
public class HighBalanceException extends Exception
{ public HighBalanceException() { super("Customer balance is high"); } }
![Page 63: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/63.jpg)
public class CustomerAccount { private int acctNum; private double balance; public static double HIGH_CREDIT_LIMIT = 20000.00; public CustomerAccount(int num, double bal) throws
HighBalanceException { acctNum = num; balance = bal; if(balance > HIGH_CREDIT_LIMIT) throw(new HighBalanceException()); } }
![Page 64: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/64.jpg)
import javax.swing.*; public class UseCustomerAccount { public static void main(String[] args) { int num; double balance; String input; input = JOptionPane.showInputDialog(null, "Enter account
number"); num = Integer.parseInt(input); input = JOptionPane.showInputDialog(null, "Enter balance due"); balance = Double.parseDouble(input); try { CustomerAccount ca = new CustomerAccount(num, balance); JOptionPane.showMessageDialog(null, "Customer #" + num + " has a balance of $" + balance); } catch( HighBalanceException hbe) { JOptionPane.showMessageDialog(null, "Customer #" + num + " has a balance higher than the credit limit"); } System.exit(0); } }
![Page 65: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/65.jpg)
Assertions are Java language features that help you detect logic errors that do not create runtime errors, but do produce results that are wrong
You use assert statement to create an assertion The syntax is… Assert booleanExpression :
optionalErrorMessage
![Page 66: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/66.jpg)
import javax.swing.*;class PayRaise{ public static void main(String[] args) { double oldPay = 0; double newPay = 0; final double INCREASE = 0.04; final double TAXRATE = 0.28; final double HRSPERWEEK = 40; final double INSURANCE = 140.00; String entry; entry = JOptionPane.showInputDialog(null, "Enter old pay per hour"); oldPay = Double.parseDouble(entry); newPay = oldPay + oldPay * INCREASE; assert oldPay < newPay: "\nOld Pay is " + oldPay + "\nNew pay is $" + newPay + "\nNew pay should be more than old pay"; newPay = (newPay * HRSPERWEEK) - (newPay * TAXRATE) - INSURANCE; assert oldPay < newPay: "Old Pay is " + oldPay + "\nNew pay is $" + newPay + "\nNew pay should be more than old pay"; JOptionPane.showMessageDialog(null, "New net pay is $" + newPay + " per week"); System.exit(0); }}
![Page 67: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/67.jpg)
C:\Java>javac –source 1.6 PayRaise.java
C:\Java>java –ea PayraiseException in thread “main”
java.lang.AssertioniError:Old Pay is $12.48New pay is $0.0New pay should be more than old pay At PayRaise.main<PayRaise.java:18>
C:\Java>
![Page 68: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/68.jpg)
public class CustomerAccount{ private int acctNum; private double balance; public static double HIGH_CREDIT_LIMIT = 20000.00; public CustomerAccount(int num, double bal) throws
HighBalanceException { acctNum = num; balance = bal; if(balance > HIGH_CREDIT_LIMIT) throw(new HighBalanceException()); }}
![Page 69: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/69.jpg)
import javax.swing.*;public class DemoStackTrace{ public static void main(String[] args) { methodA(); // line 6 } public static void methodA() { System.out.println("In methodA()"); methodB(); // line 11 } public static void methodB() { System.out.println("In methodB()"); methodC(); // line 16 } public static void methodC() { System.out.println("In methodC()"); JFrame frame = null; frame.setVisible(true); // line 22 }}
![Page 70: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/70.jpg)
![Page 71: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/71.jpg)
![Page 72: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/72.jpg)
![Page 73: Tues. Nov. 25. An exception is an unexpected error or condition, such as ◦ You issue a command to read a file from a disk, but the file does not exist](https://reader035.vdocument.in/reader035/viewer/2022062408/56649e315503460f94b21fe7/html5/thumbnails/73.jpg)