2017-07-06 30 views
2

我想創建一個Handle,以確保在傳遞到hClose時發生失敗(異常)。我需要這個用於測試目的。創建一個保證hClose失敗的句柄

如何創建這樣的Handle

+0

你可以傳遞一個undefined的句柄...... –

+1

@WillemVanOnsem除非你需要在試圖關閉它之前用成功的句柄做一些事情。 – chepner

回答

2

模塊的包的GHC.IO.Handle具有功能mkFileHandle

mkFileHandle ::(IODevice dev的,BufferedIO dev的,分型dev的)=> dev的 - >文件路徑 - > IOMODE - >也許TextEncoding - > NewlineMode - > IO處理

IODeviceBufferedIO是,對於一個設備提供基本手柄操作類型類。特別是,IODeviceclose方法。

您可以創建自己的虛擬設備類型,定義這兩個實例爲它(與close拋出異常),然後使用mkFileHandle獲得可用Handle

有關如何執行此操作的示例,請參閱knob包的代碼。