我注意到Control.Exception中还有一个IOException类型,具有单独的System.IO.Error模块和IOError类型的重点是什么?是因为历史原因吗?我应该避免使用它而更喜欢Control.Exception.IOException吗?
答案 0 :(得分:12)
是的,这只是出于历史原因。
System.IO.Error
有IOError
类型,它只是IOException
的类型同义词(无论如何都在GHC中)。
GHC奇特的异常层次结构机制不是Haskell标准的一部分。因此,IOError
用于与Haskell 2010兼容。
如果您对GHC特定感到满意,IOException
和整个异常层次结构只是更好,应该是首选。
答案 1 :(得分:3)
IOError是旧的Haskell98 IO exception类型。 Control.Exception和其他更新的变体不一定与Haskell98兼容,但我们可以在其中嵌入旧的Haskell98错误,因此类型为同义词。