Roger that. I've done quite a bit of reading on the checked versus
unchecked exceptions myself.

Thanks for the help.

The Sunburned Surveyor

On Wed, Oct 22, 2008 at 1:52 PM, Martin Davis <[EMAIL PROTECTED]> wrote:
> Seems like a reasonable direction to me.  The question of checked VS
> unchecked has been debated endlessly in the Java world, with no final
> resolution that I can see.  Bottom line is that if you want to throw an
> exception from FeatureCollection it *has* to be unchecked.  The good
> news is that if you *are* being a cowboy, there'll be a lot of other
> buckaroos ridin' the range with ya.
>
> Sunburned Surveyor wrote:
>> Martin,
>>
>> I had thought about converting the IOException to a Runtime Exception.
>> The only thing I don't like about this technique is that the client
>> code using the library has no control over how the Runtime Exception
>> is handled. Of course, I guess you could argue that client code
>> shouldn't need control over the exception handling, since Exceptions
>> weren't declared as part of the interface to begin with.
>>
>> Perhaps I have a unique case.
>>
>> I can't remember, but if you can catch a RuntimeException in the
>> client code, this would be a good approach. I can explain in the
>> Javadoc for my libraries methods which Runtime Exceptions are thrown
>> by my implementations of the interface, and why they are thrown.
>>
>> The Sunburned Surveyor
>>
>> On Wed, Oct 22, 2008 at 1:28 PM, Martin Davis <[EMAIL PROTECTED]> wrote:
>>
>>> You could map the checked Exception into an unchecked one (and chain the
>>> original exception).  This isn't going to make any difference to the
>>> calling code, because it isn't expecting *any* exceptions, let alone
>>> checked IOExceptions.
>>>
>>> There is a school of thought that contends that Java checked exceptions
>>> are a failed experiment - and I think that this sort of situation is the
>>> kind of thing they use to make their case.
>>>
>>> If you would like other precedent, Spring uses exception mapping to
>>> dramatically simplify their JDBC adapter framework (and they use
>>> unchecked exceptions, being heavily in the above school).
>>>
>>> Sunburned Surveyor wrote:
>>>
>>>> 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
>>>>
>>>>
>>>>
>>> --
>>> Martin Davis
>>> Senior Technical Architect
>>> Refractions Research, Inc.
>>> (250) 383-3022
>>>
>>>
>>> -------------------------------------------------------------------------
>>> 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
>>>
>>>
>>
>> -------------------------------------------------------------------------
>> 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
>>
>>
>
> --
> Martin Davis
> Senior Technical Architect
> Refractions Research, Inc.
> (250) 383-3022
>
>
> -------------------------------------------------------------------------
> 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
>

-------------------------------------------------------------------------
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