exception - 如何在 Haskell 中定义自定义异常?

标签 exception haskell

Control.Exception 文档说我可以执行以下操作来创建自己的异常:

 data MyException = ThisException | ThatException
     deriving (Show, Typeable)

 instance Exception MyException

如果我将其粘贴到文件中并编译(在导入 Control.Exception 和 Data.Typeable 之后),我会得到:
exp.hs:6:20:
    Can't make a derived instance of `Typeable MyException'
      (You need -XDeriveDataTypeable to derive an instance for this class)
    In the data type declaration for `MyException'

我必须打开这个扩展才能有用户定义的异常吗?如果不是,请有人举个例子。谢谢。

最佳答案

是的,您需要打开该扩展程序。尝试编写 Typeable 不是一个好主意手动实例,因为它与 GHC 的内部有一些联系。

关于exception - 如何在 Haskell 中定义自定义异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2270681/

相关文章:

c++ - 无法在 MinGW 中捕获 bad_alloc

java - 线程因未捕获的异常而退出

haskell - `lift` 一个类型到一个模板 Haskell `TypeQ`

haskell - Yesod数据库持久记录访问

exception - 无法捕获 AIF 服务内的异常

java - 显示 : exception is never thrown in body of try statement 的语法警告

haskell - Haskell中具有多态性的引用透明性

haskell - Haskell 中的类型与数据性能

c++ - 0x76b1dd74 处未处理的异常。访问冲突写入位置 0x00000000

haskell - 为什么 ListT monad 转换器被认为是错误的 - 它违反了哪些 monad 法则?