:i wrongly claims "Imported from ..."
Mostly cosmetic mix-up:
Prelude> :m GHC.Exception
Prelude GHC.Exception> :i System.IO.Error.catch
catch :: IO a -> (IOError -> IO a) -> IO a
-- Imported from GHC.Exception
The catch described is not the same on as imported from
GHC.Exception.