0
は、私が試したとき: Yesodハンドラ内で例外を「キャッチ」するにはどうすればよいですか?
foos <- (return $ map (encode .> cs .> jsonToFoo body) `catch` r400
は、私は、次のタイプのエラーを得た:
/path/to/File.hs:47:78: error:
• Couldn't match type ‘(->) e0’ with ‘IO’
arising from a functional dependency between:
constraint ‘MonadBase IO ((->) e0)’ arising from a use of ‘r400’
instance ‘MonadBase ((->) r) ((->) r)’ at <no location info>
• In the second argument of ‘catch’, namely ‘r400’
In a stmt of a 'do' block:
foos <- (return $ map (encode .> cs .> jsonToFoo) body)
`catch` r400
In the expression:
do { (body :: [Value]) <- requireJsonBody;
foos <- (return $ map (encode .> cs .> jsonToFoo) body)
`catch` r400;
.... }
方法があれば、それはliftIO
が、それは、ありません必要?
[持ち上げたベースパッケージから[catch]のバージョンを使用してください](https://hackage.haskell.org/package/lifted-base-0.2.3.10/docs/Control-Exception-Lifted.html# v:キャッチ)。 –
@AlexisKingありがとう、それを試してみてください。 – Wizek
@AlexisKing私はまったく同じ型エラーを受け取りました: '型にマッチできませんでした '( - >)e0' with 'IO'' – Wizek