This page is optimized for mobile devices, if you would prefer the desktop version just click here

2.15 Java1630: exception handling  (Page 16/17)

Discuss in fragments

This program is a little longer than the previous programs, so I will break it down and discuss it in fragments. A complete listing of the program is shownin Listing 10 .

The class definition shown in Listing 6 is used to construct a custom exception object that encapsulates a message. Note that thisclass extends Exception . (Therefore, it is a checked exception.)

Listing 6 . The class named MyException .
class MyException extends Exception{ MyException(String message){//constrsuper(message); }//end constructor}//end MyException class

The constructor for this class receives an incoming String message parameter and passes it to the constructor for the superclass. This makesthe message available for access by the getMessage method called in the catch block.

The try block

Listing 7 shows the beginning of the main method, including the entire try block

Listing 7 . The try block.
class Excep16{//controlling class public static void main(String[] args){try{ for(int cnt = 0; cnt<5; cnt++){ //Throw a custom exception, and// pass message when cnt == 3 if(cnt == 3) thrownew MyException("3"); //Transfer control before// processing for cnt == 3 System.out.println("Processing data for cnt = " + cnt);}//end for-loop }//end try block

The main method executes a for loop (inside the try block) that guarantees that the variable named cnt will reach a value of 3 after a couple of iterations.

Once during each iteration, (until the value of cnt reaches 3) a print statement inside the for loop displays the value of cnt . This results in the output shown in Figure 11 .

Figure 11 . Output from the for loop.
Processing data for cnt = 0 Processing data for cnt = 1Processing data for cnt = 2

What happens when cnt equals 3?

However, when the value of cnt equals 3, the throw statement in Listing 7 is executed. This causes control to transfer immediately to the matching catch block following the try block (see Listing 8 ). During this iteration, the print statement following the throw statement is not executed. Therefore, the output never shows a value for cnt greater than 2, as shown in Figure 11 .

The catch block

Listing 8 shows a catch block whose type matches the type of exception thrown in Listing 7 .

Listing 8 . A matching catch block.
catch(MyException e){ System.out.println("In exception handler, " + "get the message\n"+ e.getMessage()); }//end catch block

When the throw statement is executed in Listing 7 , control is transferred immediately to the catch block in Listing 8 . No further code is executed within the try block.

A reference to the object instantiated as the argument to the throw keyword in Listing 7 is passed as a parameter to the catch block. That reference is known locally by the name e inside the catch block.

Using the incoming parameter

The code in the catch block calls the method named getMessage (inherited from the Throwable class) on the incoming parameter and displays that message on the screen. This produces the output shown in Figure 12 .

<< Chapter < Page Page > Chapter >>

Read also:

OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.
Jobilize.com uses cookies to ensure that you get the best experience. By continuing to use Jobilize.com web-site, you agree to the Terms of Use and Privacy Policy.