Well, my problems have now multiplied beyong belief!

Allow me to summerise:

1. There exists an I/O exception called "invalid parameter", which is not detectable with any of the 8 predicates. (Isn't this what "illegal operation" is supposed to be for? A general catch-all?)

2. Attempting to open an invalid filename yields the undetectable "invalid parameter" exception (rather than, say, illegal operation).

3. Attempting to read a directory with an invalid name does the same.

3. Attempting to open a *file* you don't have permission for yields "permission error", as expected. However, attempting to read a *directory* yields... invalid parameter again. (Thus, even if this exception were detectable, there's no way to tell the difference between a permission error and a malformed filename.)

4. Not actually related to exceptions, but doesDirectoryExist "C:\" yields False. (Even though getDirectoryContents "C:\" yields the correct result.) So I can't even use that to filter out invalid directory names.

Aaaarrrgh! >_<

Clearly, making my program give the user meaningful error messages is going to be very hard - unless I resort to trying to *parse* the output of the Show instance for IOError...

Does anybody have any helpful hints for me at this point?

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to