devxlogo

Looped Exceptions

Looped Exceptions

Question:
Is there any way to catch exceptions repeatedly, instead of just once? For example, when creating a Date object with a String, an IllegalArgumentException can begenerated and caught. In the catch statement, if an attempt is made to create the Date with another String, there isn’t anything I can do if it also throws an exception. Is there somesort of looped catch statement?

Answer:
There is no such thing as a looped catch statement in Java. Code that requires such a construct should probably be restructured. Sometimes an exception handler is forced to catch an exception, but this does not require looping. A common example is a socket I/O operation that generates a fatal IOException. It is oftennecessary to do some cleanup and call close() in the catch statement rather than a finally clause or later in the code. This call can also cause an exception, but the exception can be caught and ignored.

An exception is usually either fatal or recoverable. Recoverable exceptions are handled within the context of more general logic. Forexample, if you are reading user input and receive an invalid date, you would probably ask the user to re-enter the date. This would behandled in a loop and would require only one catch statement. For example:

do {    String input = getInput();    try {      date = new Date(input);      validInput = true;    } catch(IllegalArgumentException e) {      validInput = false;      printInvalidInputMessage();    }} while(!validInput);

devx-admin

Share the Post: