As part of my work on a FeatureCache for OpenJUMP I needed to write a
class that implemented the FeatureCollection interface. I ran into an
interesting problem while doing this. I'd like to get some advice from
my more experienced programmers.

Take (as an example) the add method of the FeatureCollection
interface. It does not throw any Exception objects. I believe this
means that implementations of this method can only throw runtime
exceptions. However, my implementation of this method in the
FeatureCache depends on IO operations. These IO operations throw
IOExceptions. They are not runtime exceptions, so I can't rethrow them
from my add method eimplementation. I don't want to just eat the
IOException, or return null from the method, because then my poor
OpenJUMP user won't know what is wrong. My recent reading in the book
Hardcore Java also made me realize it isn't appropriate to print a
message and/or stack trace to the System console, because the user may
never see this.

Here is what I was thinking might be a solution. I'll add a
setErrorHandler method to my FeatureCache. It will accept any
implementation of the ErrorHandler interface, which will define a
single method. This method will look something like this:

public void handleThrowable(Throwable someError)

I can then access this ErrorHandler object from within the
FeatureCache. This would allow me to handle an IOException from within
my add method in a way that is appropriate for the handler code. When
I integrate the FeatureCache into OpenJUMP I could flash a warning on
the workbench GUI using this mechanism.

Are there any comments on this idea? How do you guys handle similar
situations, where you are writing a library that implements an
interface outside the library, and you need to handle/throw undeclared
exceptions?

Is there an established design pattern for the solution I describe above?

Thanks,

The Sunburned Surveyor

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to