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

Chris Douglas commented on HADOOP-12726:
----------------------------------------

{{java.io.InterruptedIOException}} serves a different purpose (albeit 
incompletely), to allow I/O stacks to reason about which data were 
acknowledged/believed to be durable when the thread was interrupted. It _also_ 
has the effect of not littering all APIs with {{InterruptedException}}, but 
it's not purely intended as a tunnel through the type system, as 
{{UnsupportedIOOperationException}} would be.

{{FileSystem}} is a public API, but implementations _routinely_ throw 
{{UnsupportedOperationException}}. Particularly as they're layered over 
compression libraries, encryption libraries, etc. that are also pluggable. 
Exceptions are part of the semantics, you are entirely correct on that point, 
but throwing an {{IOException}} for unsupported operations requires 
justification, not the other way around. Even if we want to label this as 
incompatible, we can still fix it in trunk.

> Unsupported operations should throw UnsupportedOperationException
> -----------------------------------------------------------------
>
>                 Key: HADOOP-12726
>                 URL: https://issues.apache.org/jira/browse/HADOOP-12726
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: fs
>    Affects Versions: 2.7.1
>            Reporter: Daniel Templeton
>            Assignee: Daniel Templeton
>
> In the {{FileSystem}} implementation classes, unsupported operations throw 
> {{new IOException("Not supported")}}, which makes it needlessly difficult to 
> distinguish an actual error from an unsupported operation.  They should 
> instead throw {{new UnsupportedOperationException()}}.
> It's possible that this anti-idiom is used elsewhere in the code base.  This 
> JIRA should include finding and cleaning up those instances as well.



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

Reply via email to