Java: Helping the world build bigger idiots

Bill Frantz frantz at pwpconsult.com
Mon Sep 19 19:45:20 EDT 2005


On 9/19/05, pgut001 at cs.auckland.ac.nz (Peter Gutmann) wrote:

>Found on the Daily WTF, http://www.thedailywtf.com/forums/43223/ShowPost.aspx:
>
>  try { 
>    int idx = 0; 
>    
>    while (true) { 
>      displayProductInfo(prodnums[idx]);
>      idx++; 
>      } 
>    } 
>  catch (IndexOutOfBoundException ex) { 
>    // nil
>    }

This is obviously just an attempt to make Java array access more like Java file access.  :-)

Seriously, the real flaw in this approach, which I did not see mentioned in the comments on the web page Peter references above, is the masking of IndexOutOfBoundExceptions that may be generated by displayProductInfo.  This code will treat such errors as "end of array".  A more normal coding of the loop:

    for (int i=1; i<prodnums.length; i++) { 
      displayProductInfo(prodnums[idx]);
      idx++; 
    } 

would let the exception pass up the call chain, and with good error handling, the problem would come to the attention of those responsible for fixing the program.

If ArrayIndexOutOfBoundException were used instead of IndexOutOfBoundException, errors in string indexing would pass up the call chain, while catching array problems.


Cheers - Bill

---------------------------------------------------------------------
Bill Frantz        | The first thing you need   | Periwinkle 
(408)356-8506      | when using a perimeter     | 16345 Englewood Ave
www.pwpconsult.com | defense is a perimeter.    | Los Gatos, CA 95032

---------------------------------------------------------------------
The Cryptography Mailing List
Unsubscribe by sending "unsubscribe cryptography" to majordomo at metzdowd.com



More information about the cryptography mailing list