Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 捕捉快照处理程序中的HTTPException_Haskell_Haskell Snap Framework_Httpexception - Fatal编程技术网

Haskell 捕捉快照处理程序中的HTTPException

Haskell 捕捉快照处理程序中的HTTPException,haskell,haskell-snap-framework,httpexception,Haskell,Haskell Snap Framework,Httpexception,在我的一个快照处理程序中,我正在使用HTTP客户端通过HTTP调用外部资源,该客户端可以抛出HttpException。在最简单的情况下,我只想捕获错误并在调试时写入std;然而,我很难把这些类型排好 assignCategories' :: String -> [String] -> Handler App (AuthManager App) String assignCategories' l_id cats = do let baseAttribs =

在我的一个快照处理程序中,我正在使用HTTP客户端通过HTTP调用外部资源,该客户端可以抛出
HttpException
。在最简单的情况下,我只想捕获错误并在调试时写入std;然而,我很难把这些类型排好

assignCategories' :: String -> [String] -> Handler App (AuthManager App) String
assignCategories' l_id cats  = do
            let baseAttribs = M.fromList [("id",l_id)]                                                            
            let saveQuery = WMSaveObject {baseAttributesSO= baseAttribs ,relatedSO=relatedObjects}

            -- this is the function that can throw an HTTPException            
            -- runWMSave :: WMQueryObj -> Handler App (AuthManager App) String

            saveresponse <- try $ H.runWMSave saveQuery
            return $ case saveresponse of
                Left  e -> show (e :: HttpException)
                Right r -> r
   No instance for (Control.Monad.Catch.MonadCatch
                       (Handler App (AuthManager App)))
      arising from a use of ‘try’
    In the expression: try
    In a stmt of a 'do' block:
      saveresponse <- try $ H.runWMSave saveQuery
    In the expression:
      do { liftIO $ putStrLn l_id;
           let baseAttribs = M.fromList ...;
           let relatedObjects = concatMap makeRelatedRow cats;
           let saveQuery = ...;
           .... }
谢谢,
Neil

问题解决了,我使用了MonadCatchIO transformers的
try
,效果很好。

问题解决了,我使用了MonadCatchIO transformers的
try
,效果很好