Haskell 捕捉快照处理程序中的HTTPException
在我的一个快照处理程序中,我正在使用HTTP客户端通过HTTP调用外部资源,该客户端可以抛出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 =
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
,效果很好