[Biojava-l] Exception handling
mark.schreiber at group.novartis.com
mark.schreiber at group.novartis.com
Fri Dec 17 00:26:54 EST 2004
Hello -
Exceptions that extend RuntimeException don't have to be caught. This was
a contraversial decision by the Java designers so they could make things
like NullPointerException. If you think of all the times you could throw a
null pointer exception you would need a hell of a lot of try catch
statements (one for everytime you pass an object reference). Classes that
extend RuntimeException are supposed to indicate failures due to bad
programming practice. They shouldn't really occur in a well made program.
You can catch them, you just have to know when they might be thrown. You
should only try to catch them if you can recover sensibly though so most
times you wouldn't bother unless you have a system that needs to run 24/7
without crashing. BioRuntimeException is one of these but hardly used in
the API.
The other type of Throwable is that doesn't need to be caught is Error
(BioError is one of these, also rarely used). Errors are generally
considered to be unrecoverable. You generally log them, shutdown as
gracefully as possible and call tech support.
BioException is much more common. This extends good old Exception and must
be declared and caught. It is used all over.
So I'm not sure what the problem is. If you call DNATools.createDNA and
throw some rubbish at it you will probably get something like
IllegalSymbolException (subclass of BioException). You can catch this.
Without seeing the program or stack trace all I can think of is that some
bug is causing an Error to be thrown somewhere. The only other possibility
is that you have two catch statements that conflict. Eg if you catch
BioException and exit before you catch IllegalSymbolException then you
won't reach this. Although your compiler should complain about this so it
seems unlikely.
Can you send the source? or that exception stack?
- Mark
"Richard HOLLAND" <hollandr at gis.a-star.edu.sg>
Sent by: biojava-l-bounces at portal.open-bio.org
12/17/2004 12:42 PM
To: <biojava-l at biojava.org>
cc: (bcc: Mark Schreiber/GP/Novartis)
Subject: [Biojava-l] Exception handling
Hi all,
I'd like to be able to catch exceptions and handle them but it seems that
many BioJava exceptions are sub-classes of the system kill everything no
matter what exception, which makes them uncatchable. For instance if I try
and load a junk sequence using DNATools, I get an exception quite rightly
complaining about the alphabet, but even though I try-catch the code that
parses this junk sequence (for Exception), the program quits completely
without my exception handler or any further code being called.
Is this deliberate? Surely it would be nicer to allow these exceptions to
be caught? I have noticed that many routines in the BioJava source code
throw BioException (or a name similar to that, can't remember...), yet do
not declare it in their method signatures. This could be why. It'd be much
nicer to actually declare you are going to throw an exception, what type
it is likely to be, then behave nicely instead of killing the whole app.
cheers,
Richard
Richard Holland
Bioinformatics Specialist
GIS extension 8199
---------------------------------------------
This email is confidential and may be privileged. If you are not the
intended recipient, please delete it and notify us immediately. Please do
not copy or use it for any purpose, or disclose its content to any other
person. Thank you.
---------------------------------------------
_______________________________________________
Biojava-l mailing list - Biojava-l at biojava.org
http://biojava.org/mailman/listinfo/biojava-l
More information about the Biojava-l
mailing list