【发布时间】:2017-04-19 14:29:09
【问题描述】:
我想锁定一个在 Haskell 中独占使用的文件,并在它已经被锁定的情况下抛出一个 IOError。
import Data.Maybe (fromMaybe)
import System.FileLock (FileLock, SharedExclusive (Exclusive), tryLockFile)
-- ...
do
-- ...
maybeFileLock <- tryLockFile path Exclusive -- returns Maybe FileLock
let fileLock = fromMaybe (throwIO (userError "File locked")) maybeFileLock
有没有更好的方法来处理Maybe,如果它是Nothing,就抛出一个异常?我可以将这两行合二为一吗?
注意:有人可能会争辩说,这些行的任何组合都会使意图变得不那么清晰。
【问题讨论】:
-
您的示例代码无效。它有一个类型错误。
标签: haskell exception-handling maybe