gpt4 book ai didi

haskell - 有没有办法在 Haskell 中获取异常的类型?

转载 作者:行者123 更新时间:2023-12-04 10:01:27 27 4
gpt4 key购买 nike

让我们做以下假设:

  • 我的程序由于未捕获的异常而中止
  • 我不知道该异常的类型是什么
  • 打印的错误消息不包含异常类型的提示

  • 我如何找出该异常的类型?

    最小的例子:
    main = error "foo"

    (这里当然是 ErrorCall ,但您无法从错误消息中分辨出来。)

    最佳答案

    是的。全部 Exception类型必须是 Typeable 的实例,假设您使用新的异常 API。

    import Control.Exception
    import Data.Typeable
    import Prelude hiding (catch)

    realMain = error "example"
    main = realMain `catch` h where
    h (SomeException e) = do
    putStrLn $ "Caught exception of type " ++ show (typeOf e)
    putStrLn $ show e

    结果:

    捕获 GHC.Exception.ErrorCall 类型的异常
    例子

    关于haskell - 有没有办法在 Haskell 中获取异常的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9799734/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com