Introduction to Exception Handling

Introduction to Exception Handling

Introduction to Exception Handling Chapter 9 • Sometimes the best outcome can be when Exception nothing unusual happens HdliHandling • However, the case where exceptional things happen must also be ppprepared for – Java exception handling facilities are used when the invocation of a method may cause something exceptional to occur – Often the exception is some type of error condition Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐2 Introduction to Exception Handling try-throw-catch Mechanism • Java library software (or programmer‐defined code) • The basic way of handling exceptions in Java consists of provides a mechanism that signals when something the try-throw-catch trio • The try block contains the code for the basic algorithm unusual happens – It tells what to do when everything goes smoothly – This is called throwing an exception • It is called a try block because it "tries" to execute the case where all goes as planned • In another place in the program, the programmer – It can also contain code that throws an exception if something must provide code that deals with the exceptional unusual happens try case { – This is called handling the exception CodeThatMayThrowAnException } Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐3 Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐4 try-throw-catch Mechanism try-throw-catch Mechanism throw new • A throw statement is siilimilar to a methdhod call: ExceptionClassName(PossiblySomeArguments); throw new ExceptionClassName(SomeString); • When an exception is thrown, the execution of the – In the above example, the object of class surrounding try block is stopped ExceptionClassName is created using a string as its – Normally, the flow of control is transferred to another portion of code argument known as the catch block – This object, which is an argument to the throw operator, • The value thrown is the argument to the operator, and throw is the exception object thrown is always an object of some exception class – The execution of a throw statement is called throwing an exception • Instead of calling a method, a throw statement calls a catch block Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐5 Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐6 try-throw-catch Mechanism try-throw-catch Mechanism • When an exception is thrown, the cathtch bloc k catch(Exception e) begins execution { – The catch block has one parameter ExceptionHandlingCode } – The exception object thrown is plugged in for the catch block parameter • A catch block looks like a method definition that has a parameter of type Exception class • The execution of the catch block is called catching – It is not really a method definition, however the exception, or handling the exception • A catch block is a separate piece of code that is – Whenever an exception is thrown, it should ultimately be eectedexecuted when a program encou nters and eectesexecutes a handled (or caught) by some catch block throw statement in the preceding try block – A catch block is often referred to as an exception handler – It can have at most one parameter Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐7 Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐8 try-throw-catch Mechanism try-throw-catch Mechanism cath(tch(EtiException e){) { . } • When a try block is executed, two things can • The identifier e in the above catch block heading is called the catch block parameter happen: • The catch block parameter does two things: 1. No exception is thrown in the try block 1. It specifies the type of thrown exception object that the catch bloc k can catch (e.g., an Exception class object ab)bove) – The code in the try block is executed to the end of the 2. It provides a name (for the thrown object that is caught) on which it block can operate in the catch block – The catch bboclock is ski pped – Note: The identifier e is often used by convention, but any non‐ keyword identifier can be used – The execution continues with the code placed after the catch block Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐9 Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐10 try-throw-catch Mechanism Exception Example 2. An exception is thrown in the try block and • In many cases your own code doesn’t throw caught in the catch block the exception, but instead it is thrown by an – The rest of the code in the try block is skipped existing Java library – Control is transferred to a following catch block (in simple cases) • Example: Input an integer using nextInt() – The thrown object is plugged in for the catch – block parameter What if the user doesn’t enter an integer? – The code in the catch block is executed – The nextInt method throws an – The code that follows that catch block is executed InputMismatchException (if any) Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐11 Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐12 The Exception Handling with the Scanner Class InputMismatchException • If a user enters something other than a well‐fdformed • The InputMismatchException is in the int value, an InputMismatchException will standard Java package java.util be thrown – A program that refers to it must use an import – Unless this exception is caught, the program will end with statement, such as the following: an error message import java.util.InputMismatchException; – If the exception is caught, the catch bloc k can give code • It is a descendent class of for some alternative action, such as asking the user to reenter the input RuntimeException – Therefore, it is an unchecked eceptionexception and does not have to be caught in a catch block or declared in a throws clause – However, catching it in a catch block is allowed, and can sometimes be useful Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐13 Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐14 Tip: Exception Controlled Loops Exception Controlled Loop • Sometimes it is better to simply loop through an action again when an exception is thrown, as follows: boolean done = false; while (! done) { try { CodeThatMayThrowAnException done = true; } catch (SomeExceptionClass e) { SomeMoreCode } } Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐15 Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐16 Exception Classes Exception Classes from Standard Packages • There are more exception classes than just the single • Numerous predfiddefined exception classes are ilddincluded class Exception in the standard packages that come with Java – There are more exception classes in the standard Java libraries – New exception classes can be defined like any other class – For example: • All predefined exception classes have the following IOException properties: NoSuchMethodException – There is a constructor that takes a single argument of type FileNotFoundException String – Many exception classes must be imported in order to use – The class has an accessor method getMessage that can recover the string given as an argument to the constructor them when the exception object was created import java.io.IOException; • All programmer‐defined classes should have the same properties Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐17 Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐18 Exception Classes from Standard Packages Using the getMessage Method • The predefined exception class Exception is the . // method code try root class for all exceptions { – Every exception class is a descendent class of the class . throw new Exception(StringArgument); Exception . – Although the Exception class can be used directly in a } class or program, it is most often used to define a derived catch(Exception e) class { String message = e.getMessage(); – The class Exception is in the java.lang package, and System.out.println(message); so requires no import statement System. exit(0); } . Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐19 Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐20 Using the getMessage Method Defining Exception Classes • Every exception has a Str ing itinstance varibliable tha t • A throw statement can throw an exception object contains some message of any exception class – This string typically identifies the reason for the exception • In the previous example, StringArgument is an • Instead of using a predefined class, exception classes argument to the Exception constructor can be programmer‐defined • This is the string used for the value of the string – These can be tailored to carry the precise kinds of instance variable of exception e information needed in the catch block – Therefore, the method call e.getMessage() returns – A different type of exception can be defined to identify this string each different exceptional situation Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐21 Copyright © 2012 Pearson Addison‐Wesley. All rights reserved. 9‐22 Defining Exception Classes A Programmer‐Defined Exception Class • Every exception class to be defined must be a derived class of some already defined exception class – It can be a derived class of any exception class in the standard Java libraries, or of any programmer defined exception class • Constructors are the most important members to define in an exception class – They must behave appropriately with respect to the variables and methods inherited from the base class – Often, there are

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    15 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us