En la documentación para Control.Exception en la base 4.4.0.0, hay un ejemplo de cómo hacer jerarquías de excepción. El ejemplo muestra cómo se pueden detectar generalizaciones de excepciones específicas declarando instancias de la clase Exception en términos de la excepción padre. Esto es genial, pero ¿cómo puedo hacer que mis excepciones sean hijos de excepciones existentes? Por ejemplo, quiero hacer excepciones atrapadas por restricciones de tipo en IOException. El ejemplo de la Control.Exception muestra esto: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
¿Cómo puedo obtener las limitaciones IOException de recuperar excepciones?
Parece que Haddock no ha procesado la documentación correctamente. Haga clic en el hipervínculo de 'Fuente' para ver la definición correcta (si la copio aquí, SO probablemente también la interpretará incorrectamente ...) –