2010-02-16 29 views
6

Các tài liệu Control.Exception nói rằng tôi có thể làm như sau để tạo ra ngoại lệ của riêng tôi:Cách xác định ngoại lệ tùy chỉnh trong Haskell?

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

instance Exception MyException 

Nếu tôi dán vào một tập tin và biên dịch (sau khi nhập Control.Exception và Data.Typeable), tôi nhận được:

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' 

Tôi có phải bật tiện ích mở rộng này để có ngoại lệ do người dùng xác định không? Nếu không, ai đó vui lòng cung cấp một ví dụ. Cảm ơn.

Trả lời

5

Có, bạn cần bật tiện ích mở rộng đó. Bạn không nên viết ví dụ Typeable bằng tay vì nó có một số mối liên hệ với nội bộ của GHC.

+1

Điều này có nghĩa là nói chung, không có ngoại lệ do người dùng xác định trong Haskell? – me2

+2

Nếu bạn có nghĩa là tiêu chuẩn Haskell, thì không có ngoại lệ do người dùng xác định. Nếu bạn ngụ ý ngôn ngữ mở rộng được thực hiện bởi GHC, thì chúng tồn tại như trên. –

Các vấn đề liên quan