DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19868>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19868

Exception handling in HttpClient requires redesign





------- Additional Comments From [EMAIL PROTECTED]  2003-07-15 20:06 -------
> I played around with several approaches and realized that wrapping all
> IOExceptions into HttpTransportExceptions was not simply feasible, primarily
> because InputStream / OutputStream derived classes cannot throw
> non-IOExceptions. I found no way to work that problem around in an acceptable
manner

Makes sense.
 
> The patch basically implements the first scenario of my original proposal and
> goes along the line suggested by Adrian: 
> * IOException represents transport exceptions
> * HttpException represents protocol exceptions
> 
> Here's the list of important points
> * TransportException no more

Adrian wins:)

> * HttpException is no longer derived from IOException (which is good)

I'm not so sure this is a good thing. This adds up to a very large API change
for many users.  People who are wrapping HttpClient.executeMethod() in a try{
}catch(IOException) are going to be in for some trouble.  I think we should
leave the IOException inheritence of now (even though it is ugly).

> * URIException is no longer derived from IOException (which is good)

This is only okay I think if we keep HttpException as an IOException for similar
reasons as above.

> * I had to deprecate HttpConnectionManager#getConnection(HostConfiguration,
> long) because of wrong exception type it throws

Looks good to me.  Adding the getConnectionWithTimeout() method breaks the API
but I do not think may people are creating their own connection mangers.

> * In ChunkedInputStream I had to implement a pretty ugly hack to work around
> exception type mismatc

That's not so bad.  I think we should add an error log since the original stack
track will be lost.

> * HttpConnection can now throw IOTimeoutException

Jolly good.


Overall this patch is a good incremental change.  The notable exception being
the change to HttpException.  This is a pretty big change and I do not think it
is appropriate for 2.1.  I suggest we keep HttpException as an IOException and
make it very clear (in JavaDocs, release notes, etc.) that it will not be that
way for 3.0.

Mike

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to