[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-1603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14294213#comment-14294213
 ] 

Michael Osipov commented on HTTPCLIENT-1603:
--------------------------------------------

Checked changes. That looks better now.

One facts astounds me which I and probably many others were not aware of:

bq. Please note that <interfacename>HttpClient</interfacename> implementations 
re-throw <exceptionname>HttpException</exceptionname>s as 
<exceptionname>ClientProtocolException</exceptionname>, which is a subclass of 
<exceptionname>java.io.IOException</exceptionname>. This enables the users of 
<interfacename>HttpClient</interfacename> to handle both I/O errors and 
protocol violations from a single catch clause.</para>

Though, I do not see the bonus here if you use Java 7, moreover if 
{{ClientProtocolException}} wraps a low-level {{HttpException}} which is not an 
{{IOException}}, I do not understand why {{ClientProtocolException}} inherits 
from {{IOException}}. That is confusing. Convenience, seriously?

> ClientProtocolException contradicts tutorial statement in chapter 1.4
> ---------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-1603
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1603
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: Documentation, HttpClient
>    Affects Versions: 4.3.6, 4.4 Beta1
>            Reporter: Michael Osipov
>            Priority: Minor
>             Fix For: 4.4 Final
>
>
> [Chapter 
> 1.4|http://hc.apache.org/httpcomponents-client-ga/tutorial/html/fundamentals.html#d5e271]
>  says: "HttpClient can throw two types of exceptions: {{java.io.IOException}} 
> in case of an I/O failure such as socket timeout or an socket reset and 
> {{HttpException}} that signals an HTTP failure such as a violation of the 
> HTTP protocol. Usually I/O errors are considered non-fatal and recoverable, 
> whereas HTTP protocol errors are considered fatal and cannot be automatically 
> recovered from."
> The 
> [Javadoc|http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/ClientProtocolException.html]
>  of {{ClientProtocolException}} says: "Signals an error in the HTTP 
> protocol." Given the definition established in the tutorial, either one is 
> incorrect. Either {{ClientProtocolException}} must derive from 
> {{HttpException}} or its documentation must be contrary to the latter.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to