0
A
答えて
2
これはHUnitに固有のものではないが、あなたはIO
値はスローかどうかを確認する関数を書くことができます。
λ> :set -XScopedTypeVariables
λ> import Control.Exception
λ> import Data.Functor
λ> import System.Environment
λ> throws io = catch (io $> False) $ \(e :: SomeException) -> pure True
throws :: IO a -> IO Bool
λ> sequence $ throws <$> [ getEnv "HOME", getEnv "whatever", error "a" ]
[False,True,True]
2
「例外」であなたがException
を意味し、それはいくつかにスローされている場合IO
コードの場合は、を使用できます。しかし、error "Something bad happened"
のようなものを純粋なコードで捕まえることを意味するなら、あなたは不運です。 Haskellの2010年報告書から
ghci> import Control.Exception
ghci> catch (error "Eek") (\(ErrorCallWithLocation msg _) -> putStrLn msg)
Eek
section 3::⊥(「ボトムで示される式の評価中
エラー、あなたが
IO
で取り扱いをしても構わないと思っているなら、あなたはより多くのオプションを持っています")は、非終了からのHaskellプログラムによって区別できません。ここで
それについて考えるための別の方法です:私たちは⊥(のようなerror "Help!"
)の値を評価しようとする瞬間が、この値はを作成したが、が必要な最初だった場合にのみ、だったときにはない依存していることに気づきます(Haskellは非厳密なので)。この種のエラーを捕捉するメカニズムは、参照透過性を壊します。
関連する問題
- 1. ユニットテスト例外
- 2. MSユニットテストの例外?
- 3. Visual Studioユニットテストのセキュリティ例外
- 4. ユニットテストNancyFX API - ConfigurableBootstrapper例外
- 5. Pythonコンストラクタでの例外のユニットテスト
- 6. Djangoのユニットテスト:TypeError例外: 'NoneType' オブジェクトが
- 7. ユニットテストVisual StudioのオンラインセレンChromeDriver例外
- 8. ユニットテスト断続OOM例外Autofixtureジェネレータ
- 9. MSユニットテストの例
- 10. RatpackのRequestFixtureとHandlingResultによるユニットテストの例外
- 11. ユニットテスト非同期メソッドでの例外のスロー
- 12. ログインの例外をチェックするためのユニットテストを書く
- 13. StackOverflow例外のために失敗したユニットテストのデバッグ
- 14. roboelectricのユニットテスト中にヌルポインタ例外が発生する
- 15. 発行ユニットテストEF&ASP.NETアイデンティティ - 非サポート例外:モデルの互換性
- 16. TFSサーバーでユニットテストの例外がスローされました
- 17. ユニットテストのJavaで例外数を数える方法は?
- 18. ユニットテストC#アセンブリのApp.Configで例外が返される
- 19. ユニットテストでデフォルトで「例外をスローする」べきですか?
- 20. ユニットテストで例外をスローする方法をシミュレートするには?
- 21. ユニットテストでHTTP応答に例外がレンダリングされますか?
- 22. Python例外の例外
- 23. JavaScript例外のMVC例外
- 24. インタフェース例外例外
- 25. TransactionScope例外例外
- 26. ユニットテストでのdjangoでの手動例外のスローを処理する方法は?
- 27. Javaのユニットテストの例外は、私が問題を抱えている
- 28. 非同期/待機メソッドのテスト。ユニットテストでJestが例外を捕捉しない
- 29. このユニットテストで "N"例外をスローする方法はありますか?
- 30. python pytestユニットテストでtry-exceptの例外部分をカバーする方法
これは「エラー」でも有効ですか? – cberkay
はい、 'error'を使って' IO'型の値を生成していると仮定します。私はこれを含める答えを更新しました。 –
ありがとうございます。あなたのコードをreplに入力すると、 'throws io = ...'のエラーが発生します: '不正な型シグネチャ:SomeException ' 型シグネチャはScopedTypeVariablesのパターンでのみ使用可能です – cberkay