But that code snippet is horrible; you should never catch an exception
and 'just log it' - ONLY the very top level should ever do that.
Secondly, if you do log-and-swallow, then whatever the heck you do,
don't continue with your method!

On Aug 24, 1:21 am, Martin Wildam <mwil...@gmail.com> wrote:
> On Aug 23, 11:39 am, Reinier Zwitserloot <reini...@gmail.com> wrote:
>
> > A full and exhaustive treatise doesn't exist, but there are a few
> > rules almost everyone can agree with, and yet these rules are not
> > followed by the JDK, probably because we didn't know any better back
> > then. i.e.:
> > [...]
>
> Thanks for the compact listing the best practices for using checked
> exceptions!
>
> > > The ten commandments are also very old posts
> > Mixing religion into talk about programming is a very bad idea.
> > But, I'll take your point that just because something is old does not
> > mean it's wrong.
>
> That's what I meant.
>
> > So, why are you liking Joel's post so much? The only alternative he
> > offers is something that boils down to maybees.
> > [...]
> > A Maybe is simply an alternate form of null:
>
> I like his post because he points out that Exceptions are some form of
> goto statements but being worse in the way that you often can't say
> without detailed analysis from where the goto will be triggered.
>
> Thanks for your explanation of the maybe - I have some methods where I
> use the null result in case of error.
>
> > > In the past (even before using Java) I have used a common accessible
> > > error object (containing status information and error/warning message
> > > lists) - a static one accessible from and for all levels within my
> > > application.
> > Oh, yeah, that'll go over real well with threading.
>
> If I have a process that is spawn into several threads it is indeed
> that at the end I want to have a single status if the whole process
> was successful or not. - But I agree with you that in a lot of cases
> you need separate handling for separate threads.
>
> Yesterday when going to bed I spent still a longer time thinking about
> the error handling in general. Peter painting the picture with the UML
> chart with and without error handling was very impressive.
>
> Maybe we should look at error handling from different point of views.
> First, there is the very normal dummy user who don't have a clue on
> what is there running in the background. Second there is a system
> administrator who - if something goes wrong - could see whether there
> might be a problem with the environment or with the configuration he
> is responsible for. And then there is the developer who wants/needs
> comprehensive detailed information if there is a doubt that an
> upcoming error might be due to a bug.
>
> The dummy user is usually overwhelmed if you present comprehensive
> information (or a stack trace for example). He/She wants a simple
> message - e.g. like Google Calender's "Ooops, some calenders could not
> be loaded. Try again later." - I think basically every IOException
> could result in such a final handling.
>
> The administrator wants some more information, like if a host could
> not be reached or name could not be resolved etc.
>
> The developer is the only person interested in stack traces for
> instance.
>
> I think a solution for the different interests could be a proper
> inheritance model of exceptions that you are using in your
> applications. This means, if an exception occurs I can handle it using
> the first parent exception to generate the "operation failed" thing
> and for the developer log the exact detail exception that occurred. So
> I could have some common PreCheckException (and children like
> InputPreCheckException, ConfigurationPreCheckException and so on).
>
> The second problem is the coding efficiency and readability. Within a
> method depending on the exception some object variables might not be
> set to a valid instance (if you have a longer try-block above and
> handling just one parent exception). This may result in a lot of null-
> checking necessary. A solution for this could be that the methods you
> are calling should always return in a sane way (mostly just avoiding
> null-pointer-exceptions) if they receive nulls as arguments.
>
> Sample:
>
> try
> {
>     checkInputs(myTask);
>     checkEnvironment(myTask);
>     checkConfig(myTask);
>     con = openConnection(myTask);}
>
> catch (PreCheckException e)
> {
>     doLoggingAndMessaging(e);
>
> }
>
> try
> {
>     doCoreWork(con, myTask);}
>
> catch (ProcessingException e)
> {
>     doLoggingAndMessaging(e);
>
> }
>
> closeConnection(con);
>
> In that sample doCoreWork should fail if con is null or myTask is
> missing some important data/status that it should have got during the
> prechecks.
> The closeConnection method on the other hand should not throw another
> exception but silently finish if no (open) connection is given - just
> as "well there is nothing to do for me".
>
> Such a thing looks quite clean to me.
> Just my - not verified - ideas.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javaposse@googlegroups.com
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to