| Copyright | © 2016 Julian Ospald |
|---|---|
| License | BSD3 |
| Maintainer | Julian Ospald <hasufell@posteo.de> |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | Safe |
| Language | Haskell2010 |
HPath.IO.Errors
Description
Provides error handling.
- data HPathIOException
- isFileDoesNotExist :: HPathIOException -> Bool
- isDirDoesNotExist :: HPathIOException -> Bool
- isSameFile :: HPathIOException -> Bool
- isDestinationInSource :: HPathIOException -> Bool
- isFileDoesExist :: HPathIOException -> Bool
- isDirDoesExist :: HPathIOException -> Bool
- isInvalidOperation :: HPathIOException -> Bool
- isCan'tOpenDirectory :: HPathIOException -> Bool
- isCopyFailed :: HPathIOException -> Bool
- isRecursiveFailure :: HPathIOException -> Bool
- throwFileDoesExist :: Path Abs -> IO ()
- throwDirDoesExist :: Path Abs -> IO ()
- throwFileDoesNotExist :: Path Abs -> IO ()
- throwDirDoesNotExist :: Path Abs -> IO ()
- throwSameFile :: Path Abs -> Path Abs -> IO ()
- sameFile :: Path Abs -> Path Abs -> IO Bool
- throwDestinationInSource :: Path Abs -> Path Abs -> IO ()
- doesFileExist :: Path Abs -> IO Bool
- doesDirectoryExist :: Path Abs -> IO Bool
- isWritable :: Path Abs -> IO Bool
- canOpenDirectory :: Path Abs -> IO Bool
- throwCantOpenDirectory :: Path Abs -> IO ()
- catchErrno :: [Errno] -> IO a -> IO a -> IO a
- rethrowErrnoAs :: Exception e => [Errno] -> e -> IO a -> IO a
- handleIOError :: (IOError -> IO a) -> IO a -> IO a
- bracketeer :: IO a -> (a -> IO b) -> (a -> IO b) -> (a -> IO c) -> IO c
- reactOnError :: IO a -> [(IOErrorType, IO a)] -> [(HPathIOException, IO a)] -> IO a
Types
data HPathIOException Source #
Constructors
Instances
Exception identifiers
isSameFile :: HPathIOException -> Bool Source #
isCopyFailed :: HPathIOException -> Bool Source #
Path based functions
throwSameFile :: Path Abs -> Path Abs -> IO () Source #
Uses isSameFile and throws SameFile if it returns True.
sameFile :: Path Abs -> Path Abs -> IO Bool Source #
Check if the files are the same by examining device and file id. This follows symbolic links.
throwDestinationInSource Source #
Checks whether the destination directory is contained within the source directory by comparing the device+file ID of the source directory with all device+file IDs of the parent directories of the destination.
doesFileExist :: Path Abs -> IO Bool Source #
Checks if the given file exists and is not a directory. Does not follow symlinks.
doesDirectoryExist :: Path Abs -> IO Bool Source #
Checks if the given file exists and is a directory. Does not follow symlinks.
canOpenDirectory :: Path Abs -> IO Bool Source #
Checks whether the directory at the given path exists and can be
opened. This invokes openDirStream which follows symlinks.
throwCantOpenDirectory :: Path Abs -> IO () Source #
Throws a Can'tOpenDirectory HPathIOException if the directory at the given
path cannot be opened.
Error handling functions
Arguments
| :: [Errno] | errno to catch |
| -> IO a | action to try, which can raise an IOException |
| -> IO a | action to carry out in case of an IOException and if errno matches |
| -> IO a |
Carries out an action, then checks if there is an IOException and a specific errno. If so, then it carries out another action, otherwise it rethrows the error.
Arguments
| :: Exception e | |
| => [Errno] | errno to catch |
| -> e | rethrow as if errno matches |
| -> IO a | action to try |
| -> IO a |
Execute the given action and retrow IO exceptions as a new Exception that have the given errno. If errno does not match the exception is rethrown as is.
handleIOError :: (IOError -> IO a) -> IO a -> IO a Source #
Like catchIOError, with arguments swapped.
Arguments
| :: IO a | computation to run first |
| -> (a -> IO b) | computation to run last, when no exception was raised |
| -> (a -> IO b) | computation to run last, when an exception was raised |
| -> (a -> IO c) | computation to run in-between |
| -> IO c |
Like bracket, but allows to have different clean-up
actions depending on whether the in-between computation
has raised an exception or not.
Arguments
| :: IO a | |
| -> [(IOErrorType, IO a)] | reaction on IO errors |
| -> [(HPathIOException, IO a)] | reaction on HPathIOException |
| -> IO a |