2017-08-16 22 views
2

http-client https://www.stackage.org/haddock/lts-9.0/http-client-0.5.7.0/Network-HTTP-Client.html#v:httpLbsを使用するyesodアプリケーションがあります。私は電話していますhttpLbs(http-client)によってスローされた例外をキャッチする方法

resp <- httpLbs req man 

Handler (Response BSL.ByteString)モナドの中にあります。

私は(アプリケーションのログに)これを取得しています

6/Aug/2017:15:14:17 +0200 [Error#yesod-core] HttpExceptionRequest Request { ... 

は、その代わりに、私は例外をキャッチし、私のコードでそれを処理する(コードの次の行が実行されることは決してありません) 。どうやって?

答えて

4

safe-exceptionsライブラリのtryAny機能を使用することをおすすめします。大雑把に、これは次のようになります。安全な例外を使用して

eres <- tryAny $ httpLbs req man 
case eres of 
    Left e -> handleException e 
    Right lbs -> handleBody lbs 

あなたは、あなたがそうでなければ非同期例外とモナド変圧器とに実行するかもしれないいくつかのコーナーケースを防ぐことができます。

関連する問題