7
Vamos a hacer las siguientes suposiciones:¿Hay alguna forma de obtener el tipo de excepción en Haskell?
- mi programa aborta debido a una excepción no capturada
- que no tienen idea de lo que el tipo de esa excepción es
- el mensaje de error impreso contiene ninguna pista sobre el tipo de excepción
¿Cómo puedo averiguar el tipo de esa excepción?
ejemplo Mínimo:
main = error "foo"
(. Aquí es por supuesto ErrorCall
, pero no se puede decir que desde el mensaje de error)
¿Has probado esto? No lo he hecho, pero supongo que esto imprimirá 'SomeException'. – user1078763
El código de Haskell '(SomeException e)' does ** not ** significa que 'e' tiene el tipo' SomeException', que se escribiría 'e :: SomeException' (pero que no puede aparecer en los patrones). La única apariencia de 'SomeException' anterior es como un constructor. Entonces hay dos cosas llamadas 'SomeException': el tipo y el constructor. –
Ah, no he leído su código correctamente. Entonces sí, eso funcionará. No en la primera oportunidad de excepciones que se encuentran en lo más profundo de la jerarquía, pero puedo llegar paso a paso. – user1078763