Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #12893
| Date | 2012-03-11 17:51 -0700 |
|---|---|
| From | Patricia Shanahan <pats@acm.org> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Exception Handling |
| References | (2 earlier) <XnsA01385245AD09jpnasty@94.75.214.39> <jjipli$np7$1@news.albasani.net> <XnsA013B63659242jpnasty@94.75.214.39> <S7GdnRomTdoRu8DSnZ2dnUVZ_sWdnZ2d@earthlink.com> <XnsA013C5393E0CEjpnasty@94.75.214.39> |
| Message-ID | <QdidndGYsfwc1cDSnZ2dnUVZ_tKdnZ2d@earthlink.com> (permalink) |
On 3/11/2012 4:23 PM, Novice wrote: > Patricia Shanahan<pats@acm.org> wrote in > news:S7GdnRomTdoRu8DSnZ2dnUVZ_sWdnZ2d@earthlink.com: > >> On 3/11/2012 2:54 PM, Novice wrote: >>> Lew<noone@lewscanon.com> wrote in news:jjipli$np7$1 > @news.albasani.net: >> ... >>>> It is common and frequently useful to create an application-specific >>>> checked exception. Again, and I've said this many times, think about >>>> what will be useful when troubleshooting a problem. Many times, a >>>> custom exception is useful. It says that the underlying exception has >>>> been caught, logged and wrapped. >>>> >>> But how is a custom FooException better than a good ol' >>> IllegalArgumentException? I'm not quite getting that yet. >> >> Generally, you should use different Exception subclasses for cases that >> may need different handling, so that callers can set up appropriate >> catch blocks. >> >> Regardless of the conditions under which you choose to generate >> IllegalArgumentException, many methods you will be calling use it to >> indicate an illegal argument condition that has not yet been logged or >> otherwise reported. >> >> If you also use it to indicate exceptions that have already been > logged, >> you risk either repeated logging of the same issue, or failure to log. >> >> On the other hand, if you create an Exception subclass that you only >> throw after logging the underlying problem, there is no ambiguity. >> Callers have to deal with the consequences of the failure, but should >> only generate log messages if they have something to add. The > underlying >> problem has already been logged. >> > I'm sure this will seem like good advice when I understand it but it's > still vague to me. > > It would really help if you could suggest a concrete example or two that > show when to use a custom exception and why it's better. > Using the same exception for "illegal argument" and "already logged and wrapped" is unlikely to get you into much trouble in a short program viewed for a few minutes. The potential trouble comes when you have a large program, too large to read the whole thing before making a change, and it is being modified by a programmer who does not know, or does not remember, that the exception has those two meanings. That makes it difficult to illustrate in a small example. Remember that a lot of what you are being told, both in the newsgroup and in the articles you are reading, is based on experience with maintaining large programs over many years. Patricia
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
Exception Handling Novice <novice@example..com> - 2012-03-11 01:51 +0000
Re: Exception Handling Lew <noone@lewscanon.com> - 2012-03-10 18:39 -0800
Re: Exception Handling Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-03-11 11:53 -0300
Re: Exception Handling Lew <noone@lewscanon.com> - 2012-03-11 10:51 -0700
Re: Exception Handling Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-03-11 16:35 -0300
Re: Exception Handling Novice <novice@example..com> - 2012-03-11 17:05 +0000
Re: Exception Handling Lew <noone@lewscanon.com> - 2012-03-11 10:53 -0700
Re: Exception Handling Novice <novice@example..com> - 2012-03-11 20:36 +0000
Re: Exception Handling Lew <noone@lewscanon.com> - 2012-03-11 11:07 -0700
Re: Exception Handling Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-03-11 17:00 -0300
Re: Exception Handling Novice <novice@example..com> - 2012-03-11 22:02 +0000
Re: Exception Handling Arivald <NOSPAMarivald@interia.pl> - 2012-03-11 21:03 +0100
Re: Exception Handling Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-03-11 18:31 -0300
Re: Exception Handling Novice <novice@example..com> - 2012-03-11 21:54 +0000
Re: Exception Handling Patricia Shanahan <pats@acm.org> - 2012-03-11 15:26 -0700
Re: Exception Handling Novice <novice@example..com> - 2012-03-11 23:23 +0000
Re: Exception Handling Lew <noone@lewscanon.com> - 2012-03-11 16:52 -0700
Re: Exception Handling Novice <novice@example..com> - 2012-03-12 17:16 +0000
Re: Exception Handling Lew <noone@lewscanon.com> - 2012-03-13 08:31 -0700
Re: Exception Handling Patricia Shanahan <pats@acm.org> - 2012-03-11 17:51 -0700
Re: Exception Handling Novice <novice@example..com> - 2012-03-12 17:26 +0000
Re: Exception Handling Arne Vajhøj <arne@vajhoej.dk> - 2012-03-12 14:49 -0400
Re: Exception Handling Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-03-11 20:46 -0300
Re: Exception Handling Novice <novice@example..com> - 2012-03-12 17:43 +0000
Re: Exception Handling Patricia Shanahan <pats@acm.org> - 2012-03-11 11:14 -0700
Re: Exception Handling Novice <novice@example..com> - 2012-03-11 22:35 +0000
Re: Exception Handling Lew <noone@lewscanon.com> - 2012-03-11 16:58 -0700
Re: Exception Handling Novice <novice@example..com> - 2012-03-12 15:44 +0000
Re: Exception Handling Gene Wirchenko <genew@ocis.net> - 2012-03-12 10:34 -0700
Re: Exception Handling Arivald <NOSPAMarivald@interia.pl> - 2012-03-11 20:34 +0100
Re: Exception Handling Novice <novice@example..com> - 2012-03-11 22:36 +0000
Re: Exception Handling Arne Vajhøj <arne@vajhoej.dk> - 2012-03-12 14:41 -0400
Re: Exception Handling Arne Vajhøj <arne@vajhoej.dk> - 2012-03-12 14:37 -0400
Re: Exception Handling Novice <novice@example..com> - 2012-03-12 22:43 +0000
Re: Exception Handling Lew <lewbloch@gmail.com> - 2012-03-12 16:11 -0700
Re: Exception Handling Arivald <NOSPAMarivald@interia.pl> - 2012-03-13 00:54 +0100
Re: Exception Handling Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-03-13 06:05 -0300
csiph-web