Trong tài liệu hướng dẫn cho Control.Exception trong cơ sở 4.4.0.0, có một ví dụ về cách thực hiện phân cấp ngoại lệ. Ví dụ này cho thấy cách người ta có thể nắm bắt khái quát về một ngoại lệ cụ thể bằng cách khai báo các cá thể của lớp Ngoại lệ về ngoại lệ của cha mẹ. Điều này thật tuyệt, nhưng làm thế nào để tôi có ngoại lệ cho trẻ em của các trường hợp ngoại lệ hiện tại. Ví dụ, tôi muốn thực hiện các ngoại lệ bị bắt bởi các ràng buộc kiểu trên IOException. Ví dụ trong Control.Exception cho thấy điều này:Haskell Extensible IO Exceptions?
*Main> throw MismatchedParentheses catch (\e -> putStrLn ("Caught " ++ show (e :: SomeCompilerException)))
Caught MismatchedParentheses
*Main> throw MismatchedParentheses catch (\e -> putStrLn ("Caught " ++ show (e :: IOException)))
*** Exception: MismatchedParentheses
Làm cách nào để nhận ngoại lệ IOException để bắt ngoại lệ của tôi?
Dường như Haddock không hiển thị tài liệu đúng cách. Nhấp vào liên kết 'Source' để xem định nghĩa đúng (nếu tôi sao chép nó ở đây SO có lẽ cũng sẽ hiển thị sai nó ...) –