Java Exception Handling errors using Javas exception handling
- Slides: 72
Java Exception Handling errors using Java’s exception handling mechanism James Tam
Approaches For Dealing With Error Conditions • Use branches/decision making and return values • Use Java’s exception handling mechanism James Tam
Class Inventory: An Earlier Example public class Inventory { public final int MIN = 0; public final int MAX = 100; public final int CRITICAL = 10; public boolean add(int amount) { int temp; temp = stock. Level + amount; if (temp > MAX) { System. out. print("Adding " + amount + " item will cause stock "); System. out. println("to become greater than " + MAX + " units (overstock)"); return(false); } James Tam
Class Inventory: An Earlier Example (2) else { stock. Level = stock. Level + amount; return(true); } } // End of method add(). . . James Tam
Some Hypothetical Method Calls: Condition/Return reference 1. method 1() if (reference 2. method 2() == false) return(false); reference 2. method 2() if (store. add. To. Inventory(amt) == false) return(false); store. add. To. Inventory(int amt) if (temp > MAX) return(false); James Tam
Some Hypothetical Method Calls: Condition/Return reference 1. method 1() Problem 1: The calling method may forget to check the return value if (reference 2. method 2() == false) return(false); reference 2. method 2() if (store. add. To. Inventory(amt) == false) return(false); store. add. To. Inventory(int amt) if (temp > MAX) return(false); James Tam
Some Hypothetical Method Calls: Condition/Return reference 1. method 1() if (reference 2. method 2() == false) return(false); reference 2. method 2() if (store. add. To. Inventory(amt) == false) return(false); Problem 2: A long series of method calls requires many checks/returns store. add. To. Inventory(int amt) if (temp > MAX) return(false); James Tam
Some Hypothetical Method Calls: Condition/Return reference 1. method 1() if (reference 2. method 2() == false) return(false); reference 2. method 2() if (store. add. To. Inventory(amt) == false) ? ? return(false); ? ? Problem 3: The calling method may not know how to handle the error store. add. To. Inventory(int amt) if (temp > MAX) return(false); James Tam
Approaches For Dealing With Error Conditions • Use branches/decision making constructs and return values • Use Java’s exception handling mechanism James Tam
Handling Exceptions Format: try { // Code that may cause an error/exception to occur } catch (Exception. Type identifier) { // Code to handle the exception } James Tam
Handling Exceptions: Reading Input Location of the online example: /home/219/examples/exceptions/handling. Exceptions/input. Example public class Driver { public static void main (String [] args) { Buffered. Reader string. Input; Input. Stream. Reader character. Input; String s; int num; character. Input = new Input. Stream. Reader(System. in); string. Input = new Buffered. Reader(character. Input); James Tam
Handling Exceptions: Reading Input (2) try { System. out. print("Type an integer: "); s = string. Input. read. Line(); System. out. println("You typed in. . . " + s); num = Integer. parse. Int (s); System. out. println("Converted to an integer. . . " + num); } catch (IOException e) { System. out. println(e); } catch (Number. Format. Exception e) {. . . } } } James Tam
Handling Exceptions: Where The Exceptions Occur The first exception can occur here try { System. out. print("Type an integer: "); s = string. Input. read. Line(); System. out. println("You typed in. . . " + s); num = Integer. parse. Int (s); System. out. println("Converted to an integer. . . " + num); } James Tam
Handling Exceptions: Result Of Calling Buffered. Reader. Read. Line() try { System. out. print("Type an integer: "); s = string. Input. read. Line(); System. out. println("You typed in. . . " + s); num = Integer. parse. Int (s); System. out. println("Converted to an integer. . . " + num); } James Tam
Where The Exceptions Occur In Class Buffered. Reader • For online documentation for this class go to: - http: //docs. oracle. com/javase/7/docs/api/java/io/Buffered. Reader. htm l public class Buffered. Reader { public Buffered. Reader(Reader in); public Buffered. Reader(Reader in, int sz); public String read. Line() throws IOException; . . . } James Tam
Handling Exceptions: Result Of Calling Integer. Parse. Int () The second exception can occur here try { System. out. print("Type an integer: "); s = string. Input. read. Line(); System. out. println("You typed in. . . " + s); num = Integer. parse. Int (s); System. out. println("Converted to an integer. . . " + num); } James Tam
Where The Exceptions Occur In Class Integer • For online documentation for this class go to: - http: //docs. oracle. com/javase/7/docs/api/java/lang/Integer. html public class Integer { public Integer(int value); public Integer(String s) throws Number. Format. Exception; . . . public static int parse. Int(String s) throws Number. Format. Exception; . . . } James Tam
Handling Exceptions: The Details try { System. out. print("Type an integer: "); s = string. Input. read. Line(); System. out. println("You typed in. . . " + s); num = Integer. parse. Int (s); System. out. println("Converted to an integer. . . " + num); } catch (IOException e) { System. out. println(e); } catch (Number. Format. Exception e) {. . . } } } James Tam
Handling Exceptions: Tracing The Example Integer. parse. Int(String s) { Driver. main () try } { num = Integer. parse. Int(s); } : catch (Number. Format. Exception e) { : } James Tam
Handling Exceptions: Tracing The Example Integer. parse. Int(String s) { Oops! The user didn’t enter an integer Driver. main () try } { num = Integer. parse. Int(s); } : catch (Number. Format. Exception e) { : } James Tam
Handling Exceptions: Tracing The Example Integer. parse. Int(String s) { Number. Format. Exception e = new Number. Format. Exception (); Driver. main () try } { num = Integer. parse. Int(s); } : catch (Number. Format. Exception e) { : } James Tam
Handling Exceptions: Tracing The Example Integer. parse. Int(String s) { Number. Format. Exception e = new Number. Format. Exception (); Driver. main () try } { num = Integer. parse. Int(s); } : catch (Number. Format. Exception e) { : } James Tam
Handling Exceptions: Tracing The Example Integer. parse. Int(String s) { Number. Format. Exception e = new Number. Format. Exception (); Driver. main () try } { num = Integer. parse. Int(s); } : catch (Number. Format. Exception e) { } Exception must be dealt with here James Tam
Handling Exceptions: Catching The Exception catch (Number. Format. Exception e) {. . . } } } James Tam
Catching The Exception: Error Messages catch (Number. Format. Exception e) { System. out. println(“You entered a non-integer value. ”); System. out. println(e. get. Message()); System. out. println(e); e. print. Stack. Trace(); } } } James Tam
Catching The Exception: Error Messages For input string: "james tam" catch (Number. Format. Exception e) { System. out. println(“You entered a non-integer value. ”); System. out. println(e. get. Message()); System. out. println(e); e. print. Stack. Trace(); } java. lang. Number. Format. Exception: For input string: "james tam" } } java. lang. Number. Format. Exception: For input string: "james tam" at java. lang. Number. Format. Exception. for. Input. String(Number. Format. Exception. java: 48) at java. lang. Integer. parse. Int(Integer. java: 426) at java. lang. Integer. parse. Int(Integer. java: 476) at Driver. main(Driver. java: 39) James Tam
Avoid Squelching Your Exceptions try { s = string. Input. read. Line(); num = Integer. parse. Int (s); } catch (IOException e) { System. out. println(e); } catch (Number. Format. Exception e) { // Do nothing here but set up the try-catch block to // bypass the “annoying” compiler error } James Tam
Avoid Squelching Your Exceptions try { s = string. Input. read. Line(); num = Integer. parse. Int (s); } catch (IOException e) { System. out. println(e); } catch (Number. Format. Exception e) { // Do nothing here but set up the try-catch block to // bypass the “annoying” compiler error NO! } James Tam
The Finally Clause • An additional part of Java’s exception handling model (trycatch-finally). • Used to enclose statements that must always be executed whether or not an exception occurs. James Tam
The Finally Clause: Exception Thrown f. method () { try { f. method(); } } catch { } finally { } James Tam
The Finally Clause: Exception Thrown f. method () te the at u c e x pt to e try block th m e t t A 1) in the ception d o h t me n ex a w o r may th try { f. method(); { 2) Exception thrown here } } catch { is n o pti ere e c x th 3) E augh c } finally 4) A the end of the catch block control transfers to the finally clause { } James Tam
The Finally Clause: No Exception Thrown f. method () try { f. method(); ecute x e o t mpt e 1) Atte ethod in th y the m at ma h t k c ption try blo e c x e an throw { 2) Code runs okay here } } catch { } () lly od fina h t me the. f f rs to o nd nsfe e a the ol tr A tr 3) con se u cla finally { } James Tam
Try-Catch-Finally: An Example Location of the online example: /home/219/examples/exceptions/handling. Exceptions/try. Catch. Finally. Example public class Driver { public static void main (String [] args) { TCFExample eg = new TCFExample (); eg. method(); } } James Tam
Try-Catch-Finally: An Example (2) public class TCFExample { public void method () { Buffered. Reader br; String s; int num; try { System. out. print("Type in an integer: "); br = new Buffered. Reader(new Input. Stream. Reader(System. in)); s = br. read. Line(); num = Integer. parse. Int(s); return; } James Tam
Try-Catch-Finally: An Example (3) catch (IOException e) { e. print. Stack. Trace(); return(); } catch (Number. Format. Exception e) { e. print. Stack. Trace (); return(); } finally { System. out. println("<<<This code will always execute>>>"); return; } } } James Tam
When The Caller Can’t Handle The Exceptions method 2 () Exception thrown! method 1 () ? ? ? main () James Tam
When The Caller Can’t Handle The Exceptions: An Example Location of the online example: /home/219/examples/exceptions/handling. Exceptions/delegating. Exceptions James Tam
When The Caller Can’t Handle The Exceptions: An Example (2) • Tracing the method calls when no exception occurs: Driver. main() TCFExample. method() Buffered. Reader. read. Line() Integer. parse. Int() User enters 10 Break out of loop Yes indeed it is an integer! James Tam
When The Caller Can’t Handle The Exceptions: An Example (3) • Tracing the method calls when an exception does occur: Driver. main() TCFExample. method() Buffered. Reader. read. Line() Integer. parse. Int() User enters 1. 9 Return to the top of loop and start the calls again This string is not an integer. James Tam
When The Caller Can’t Handle The Exceptions: An Example (4) public class Driver { public static void main (String [] args) { TCExample eg = new TCExample (); boolean input. Okay = true; James Tam
When The Caller Can’t Handle The Exceptions: An Example (5) do { } } try { eg. method(); input. Okay = true; } catch (IOException e) { e. print. Stack. Trace(); } catch (Number. Format. Exception e) { input. Okay = false; System. out. println("Please enter a whole number. "); } } while(input. Okay == false); // End of main // End of Driver class James Tam
When The Caller Can’t Handle The Exceptions: An Example (6) public class TCExample { public void method () throws IOException, Number. Format. Exception { Buffered. Reader br; String s; int num; System. out. print("Type in an integer: "); br = new Buffered. Reader(new Input. Stream. Reader(System. in)); s = br. read. Line(); num = Integer. parse. Int(s); } } James Tam
When The Driver. Main () Method Can’t Handle The Exception public class Driver { public static void main (String [] args) throws IOException, Number. Format. Exception { TCExample eg = new TCExample (); eg. method(); } } James Tam
Creating Your Own Exceptions (If There Is Time) Throwable Error Virtual. Machine. Error Exception … IOException … ? ? ? Run. Time Exception Out. Of. Memory. Error Excerpt from Big Java by C. Horstmann p. 562 James Tam
Class Exception: The Local Inheritance Hierarchy Exception Class. Not. Found IOException Clone. Not. Found Exception EOFException File. Not. Found Malformed. URL Unknown. Host Exception James Tam
Writing New Exceptions • Typical approach: tie the exception into preconditions • Remember: preconditions are things that must be true when a function is called. Pre-condition: • Example: Inventory example Arg: amount add. To. Inventory ( ) Existing inventory and new amount don’t exceed MAX If (precondition not met) then Exception occurs Else add amount to inventory James Tam
Writing New Exceptions (2) • Example 2: Division Quotient = dividend/divisor Args: dividend, divisor Pre-condition: divisor not zero division ( ) If (precondition not met) then Exception occurs Else Perform division James Tam
Writing New Exceptions: An Example Location of the online example: /home/219/examples/exceptions/writing. Exceptions/inventory. Example James Tam
Writing New Exceptions: Driver Class public class Driver { public static void main(String [] args) { Inventory chinook = new Inventory(); try { chinook. add(10); } catch (Inventory. Over. Max. Exception e) { System. out. print(">>Too much to be added to stock<<"); } James Tam
Writing New Exceptions: Driver Class (2) System. out. println(chinook. show. Stock. Level ()); try { chinook. add(10); } catch (Inventory. Over. Max. Exception e) { System. out. println(">>Too much to be added to stock<<"); } James Tam
Writing New Exceptions: Driver Class (3) System. out. println(chinook. show. Stock. Level ()); try { chinook. add(100); } catch (Inventory. Over. Max. Exception e) { System. out. println(">>Too much to be added to stock<<"); } James Tam
Writing New Exceptions: Driver Class (4) System. out. println(chinook. show. Stock. Level ()); try { chinook. remove(21); } catch (Inventory. Under. Min. Exception e) { System. out. println(">>Too much to remove from stock<<"); } System. out. println(chinook. show. Stock. Level ()); } } James Tam
Writing New Exceptions: Class Inventory public class Inventory { public final int CRITICAL = 10; public final int MIN = 0; public final int MAX = 100; private int stock. Level = 0; public boolean inventory. Too. Low() { if (stock. Level < CRITICAL) return true; else return false; } James Tam
Writing New Exceptions: Class Inventory (2) public void add(int amount) throws Inventory. Over. Max. Exception { int temp; temp = stock. Level + amount; “Throws”: if (temp > MAX) • An exception of type <E> can occur in this method { throw new Inventory. Over. Max. Exception("Adding " + amount + " item(s) “ + "will cause stock to become greater than " + MAX + " units"); } “Throw”: else stock. Level = stock. Level + amount; } • Instantiates an exception of type <E> • Execution transfers back to the ‘catch’ block of the caller James Tam
Writing New Exceptions: Class Inventory (3) " public void remove(int amount) throws Inventory. Under. Min. Exception { int temp; temp = stock. Level - amount; if (temp < MIN) { throw new Inventory. Under. Min. Exception("Removing " + amount + " item(s) will cause stock to become less than " + MIN + " units"); } else stock. Level = temp; } public String show. Stock. Level () { return("Inventory: " + stock. Level); } } James Tam
Writing New Exceptions: Class Inventory. Over. Max. Exception public class Inventory. Over. Max. Exception extends Exception { public Inventory. Over. Max. Exception() { super (); } public Inventory. Over. Max. Exception(String s) { super (s); } } James Tam
Writing New Exceptions: Class Inventory. Under. Min. Exception public class Inventory. Under. Min. Exception extends Exception { public Inventory. Under. Min. Exception() { super(); } public Inventory. Under. Min. Exception(String s) { super(s); } } James Tam
Inheritance Hierarchy For IOExceptions IOException These classes are more specific instances of class IOException EOFException File. Not. Found Exception James Tam
Inheritance And Catching Exceptions • If you are catching a sequence of exceptions then make sure that you catch the exceptions for the child classes before you catch the exceptions for the parent classes • Deal with the more specific case before handling the more general case James Tam
Inheritance And Catching Exceptions (2) Correct Incorrect try { { } } catch (EOFException e) catch (IOException e) { { } } catch (IOException e) catch (EOFException e) { { } } James Tam
After This Section You Should Now Know • The benefits of handling errors with an exception handler rather than employing a series of return values and conditional statements/branches. • How to handle exceptions - Being able to call a method that may throw an exception by using a trycatch block - What to do if the caller cannot properly handle the exception - What is the finally clause, how does it work and when should it be used • How to write your classes of exceptions • The effect of the inheritance hierarchy when catching exceptions James Tam
Simple File Input And Output You will learn how to write to and read from text files in Java. James Tam
Inheritance Hierarchy For IOExceptions IOException These classes are more specific instances of class IOException EOFException File. Not. Found Exception James Tam
Inheritance And Catching Exceptions • If you are catching a sequence of exceptions then make sure that you catch the exceptions for the child classes before you catch the exceptions for the parent classes • Deal with the more specific case before handling the more general case James Tam
Branches: Specific Before General • Correct If (x > 100) body; else if (x > 10) body; else if (x > 0) body; • Incorrect If (x > 0) body; else if (x > 100) body; James Tam
Inheritance And Catching Exceptions (2) Correct Incorrect try { { } } catch (EOFException e) catch (IOException e) { { } } catch (IOException e) catch (EOFException e) { { } } James Tam
Reading Text Input From A File Buffered. Reader 01000001 am 01000001 File. Reader ‘‘ am re st : byte ‘N’ 01001110 ar 01000001 ch 01001110 ‘A’ 00100000 “AN “ String James Tam
Writing Text Output To A File Primitives, “AN “ 000 01 Objects 1 01001110 01000001 : st re am 01000001 te File. Writer File by am tre rs 00 ‘A’ 10 0 ‘N’ 00 0 ‘‘ cha 1 By objects we of course mean references to objects 01 00 11 10 Print. Writer 010 Strings, James Tam
File Input And Output: One Complete Example Location of the online example: /home/219/examples/file. IO/Driver. java public class Driver { final static int MAX = 4; public static void main(String [] args) { String line = null; String [] paragraph = null; int i; Scanner in; // File IO Print. Writer pw = null; File. Writer fw = null; Buffered. Reader br = null; File. Reader fr = null; in = new Scanner(System. in); paragraph = new String[MAX]; James Tam
File IO: Get Data And Write To File // Get paragraph information from the user. for (i = 0; i < MAX; i++) { System. out. print("Enter line of text: "); line = in. next. Line(); paragraph[i] = line; //Add line as array element } // Write paragraph to file try { fw = new File. Writer("data. txt"); // Open pw = new Print. Writer(fw); for (i = 0; i < MAX; i++) pw. println(paragraph[i]); fw. close(); // Close } catch (IOException e) { System. out. println("Error writing to file"); } James Tam
File IO: Read Data From File try { fr = new File. Reader("data. txt"); br = new Buffered. Reader(fr); line = br. read. Line(); // Open if (line == null) System. out. println("Empty file, nothing to read"); while (line != null) { System. out. println(line); line = br. read. Line(); } fr. close(); // Close } catch (File. Not. Found. Exception e) { System. out. println("Could not open data. txt"); } catch (IOException e) { System. out. println("Trouble reading from data. txt"); } James Tam
You Should Now Know • How to write to files with Java classes • File. Writer • Print. Writer • How to reading text information from files with Java classes • File. Reader • Buffered. Reader James Tam
- Java gotchas
- Exception handling in java
- Exception handling pada java
- Apa itu exception handling
- Contoh error handling
- Exception handling in vb
- Exception handler php
- Arm exception handling
- Exception handling in ada
- Php global exception handler
- Exception handling in vb.net
- Hierarchy of thread class in java
- Java unchecked exceptions list
- Exception vs error in java
- Exception class hierarchy in java
- Java exception error
- Java unchecked exception
- Java exception localized message
- Java unchecked exception
- Gui event handling
- Java number
- Import java.util.*
- Import java swing
- Java scanner import
- Java
- Java import java.util.*
- Import java util random
- What is readline in java
- Public class
- Java import java.io.*
- Pengertian awt dan swing pada java
- Import java.awt.event.*;
- Programming language b
- Rmi vs ejb
- Payroll system using polymorphism in java
- Automate java application
- Rmi calculator
- Dining philosophers problem using monitors java
- Polymorphism bank account example
- Java definition
- Stacks in data structures
- Moving ball program in java using applet
- Binary search tree java
- Data structures using java
- Send email from java
- Android boot camp for developers using java
- Android boot camp for developers using java
- System collections generic
- Defrost using internal heat is accomplished using
- System argument exception
- Interface foo int k=0
- Class a void foo() throws exception
- Unt concur
- What is microbiology
- Runtimeexception extends exception
- What is exception?
- Phenocopy
- Charting by exception pros and cons
- Exception of koch postulates
- Apa itu exception
- Goodsalls rule
- Epc register mips
- Designated port exception permit
- No data found exception in oracle
- No data found exception in oracle
- Progress note keperawatan
- Http data source exception
- Code exception ramq ozempic
- What is exception in computer architecture
- A programmer can choose to ignore an unchecked exception.
- Apa yang dimaksud dengan exception
- Exception
- Comparative and superlative old