创建一个保证hClose失败的句柄

时间:2017-07-06 12:52:56

标签: haskell

我想创建一个Handle,以确保在传递到hClose时失败(异常)。我需要这个用于测试目的。

如何创建这样的Handle

1 个答案:

答案 0 :(得分:2)

base 包的模块GHC.IO.Handle具有mkFileHandle功能:

  

mkFileHandle ::(IODevice dev,BufferedIO dev,Typeable dev)=> dev - > FilePath - > IOMode - >也许TextEncoding - > NewlineMode - > IO句柄

IODeviceBufferedIO是为类设备提供基本句柄操作的类型类。特别是,IODevice具有close方法。

您可以创建自己的虚拟设备类型,为其定义这两个实例(使用close抛出异常),然后使用mkFileHandle获取可用的Handle。< / p>

有关如何执行此操作的示例,请参阅knob包的代码。