
Hi, I am aware that laziness sometimes may cause exception handling in unexpected ways. Recently I have such a problem that I cannot figure out how to fix (simply). I have a function `watch` that parse the content of /proc/. And I use `catch` to wrap `readFile` call, since the data in /proc/ could be gone any time. ```Haskell wrap2Maybe :: IO a -> IO (Maybe a) wrap2Maybe f = catch ((<$>) Just $! f) (\(_ :: IOException) -> return Nothing) watch args = do mStat <- wrap2Maybe (readFile ("/proc/" > fp > "stat")) >>= return . flip (>>=) parseStat print mStat watch args ``` But occasionally, my tool exits with message: GoM: /proc/1484/stat: hGetContents: does not exist (No such process) Since above code is the only `readFile` call which leads to hGetContents, I could not figure out what else should I do to catch the error. -- 竹密岂妨流水过 山高哪阻野云飞