我怎么知道我的Haskell程序中可以抛出异常?

时间:2018-03-17 23:48:15

标签: http haskell exception type-safety haskell-pipes

我正在开发一个1-10k行的个人Haskell项目,我正在使用Pipes.Concurrent生成的工人内部使用各种IO库,例如Network.HTTP.Conduit。

我刚刚意识到其中一些IO库在边缘情况下抛出异常。

GHC有没有办法给我关于未捕获异常的编译时警告?找出库可以抛出异常的最佳方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

回答我自己在2018年提出的问题。希望这会随着时间的推移而改善。

在编译时,无法知道Haskell程序的哪些部分可以抛出异常。有些库选择返回Either / Maybe monad来安全地处理边缘情况,而其他库则选择抛出异常。

就我个人而言,我认为这使得Haskell在生产中运行的吸引力大大降低,特别是因为这些异常很少有堆栈痕迹。

相关问题