小编jed*_*edf的帖子

如何在runResourceT中捕获异常

我想在不释放资源的情况下在runResourceT内捕获异常,但函数catchIO内运行计算.有没有办法在runResourceT中捕获异常,或者重构代码的推荐方法是什么?

谢谢您的帮助.

{-# LANGUAGE FlexibleContexts #-}

module Main where

import Control.Exception as EX
import Control.Monad.IO.Class
import Control.Monad.Trans.Resource

type Resource = String

allocResource :: IO Resource
allocResource = let r = "Resource"
                    in putStrLn (r ++ " opened.") >> return r

closeResource :: Resource -> IO ()
closeResource r = putStrLn $ r ++ " closed."

withResource :: ( MonadIO m
                , MonadBaseControl IO m
                , MonadThrow m
                , MonadUnsafeIO m
                ) => …
Run Code Online (Sandbox Code Playgroud)

haskell

8
推荐指数
1
解决办法
583
查看次数

标签 统计

haskell ×1