ENOTDIR - NotDirectoryException or FileSystemException ?
Remi Forax
forax at univ-mlv.fr
Thu Nov 15 07:51:22 PST 2012
On 11/15/2012 04:31 PM, David M. Lloyd wrote:
> For what my opinion is worth, I agree. I think it is perfectly
> reasonable to expand the definition of NotDirectoryException to
> include this case, even though I do acknowledge Alan's point that
> there is a subtle difference.
+1
Rémi
>
> On 11/15/2012 09:20 AM, Jim Gish wrote:
>> Moving a discussion between Alan and me here that was on core-libs-dev.
>> In short, I'm suggesting that
>> UnixException.translateToIOException(File,String) check for
>> UnixConstants.ENOTDIR and throw a NotDirectoryException instead of the
>> more general FileSystemException.
>>
>>
>> On 11/15/2012 06:48 AM, Alan Bateman wrote:
>>>
>>>>
>>>> Exactly -- that's my point. This is one of those cases. You're
>>>> trying to create a new file in a directory, but the file you
>>>> specified isn't a directory - it's a plain file. The error code
>>>> coming back is ENOTDIR and so what you get is the more general
>>>> FileSystemException with "Not a directory" as the error message, when
>>>> in fact, we could throw NotDirectoryException if we'd simply check
>>>> for errno of ENOTDIR in the first place along with the other checks
>>>> being done in UnixException translateToIOException(File,String).
>>> This isn't an obvious as it might seem because having ENOTDIR always
>>> map to DirectoryNotEmptyException may cause that exception to be
>>> thrown in other cases too. Additionally, this specific exception was
>>> intended for cases where you attempt to do something on a directory
>>> but it turns out the file is not a directory, this is subtly different
>>> to the case here. So we need to separate this one, I think the
>>> FileSystemException that you are seeing now is reasonable.
>>>
>> I assume you meant to say NotDirectoryException, above. I realize that
>> it might be thrown in other cases, but seems appropriate. I'm fine with
>> it staying as FileSystemException, but would like to understand this
>> thoroughly. The only cases I can see breaking are those that expect the
>> more general FileSystemException and are counting on the message being
>> "Not a directory". Those would break /unless /NotDirectoryException
>> also carried the message "Not a directory", which we can't do since
>> there are currently other messages being used, such as the path in
>> error.
>>
>> You say "this specific exception was intended for cases where you
>> attempt to do something on a directory but it turns out the file is not
>> a directory". Isn't that what we're doing in this case? We're
>> attempting to create a file in the path specified (which is not, as it
>> turns out, a directory).
>>
>> Thanks,
>> Jim
>>
>>> -Alan
>>
>> --
>> Jim Gish | Consulting Member of Technical Staff | +1.781.442.0304
>> Oracle Java Platform Group | Core Libraries Team
>> 35 Network Drive
>> Burlington, MA 01803
>> jim.gish at oracle.com
>>
>
>
More information about the nio-dev
mailing list