首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何显示Haskell中抛出的错误的回溯

显示Haskell中抛出的错误的回溯(backtrace)可以通过使用GHC.Stack模块中的callStackprettyCallStack函数来实现。以下是一个简单的示例:

代码语言:haskell
复制
import GHC.Stack

-- 定义一个可能会抛出异常的函数
divide :: Int -> Int -> Int
divide x y = x `div` y

-- 定义一个处理异常的函数,并显示回溯
handleError :: Either SomeException a -> IO ()
handleError (Left e) = do
  putStrLn "发生错误:"
  print e
  putStrLn "回溯:"
  print callStack
handleError (Right _) = putStrLn "操作成功"

main :: IO ()
main = do
  let result = try (evaluate (divide 10 0)) :: IO (Either SomeException Int)
  handleError result

在这个示例中,我们定义了一个可能会抛出异常的divide函数,然后在main函数中使用try函数捕获异常,并将异常传递给handleError函数。在handleError函数中,我们使用callStack函数获取回溯信息,并使用prettyCallStack函数将其格式化为可读的字符串。最后,我们将回溯信息输出到控制台。

需要注意的是,callStack函数只能在使用-prof选项编译程序时生效。如果不需要回溯信息,可以使用HasCallStack类型类来代替callStack函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券