[GHC] #12096: Attach stacktrace information to SomeException
GHC
ghc-devs at haskell.org
Sun May 22 18:57:36 UTC 2016
#12096: Attach stacktrace information to SomeException
-------------------------------------+-------------------------------------
Reporter: ndtimofeev | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Core Libraries | Version: 8.0.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by gridaphobe):
I'm generally in favor of adding `CallStack`s to exceptions (I've often
cursed myself for using exceptions and having no clue where they were
thrown).
I'm not sure this is the best API though. A few thoughts:
1. I would prefer to not serialize the `CallStack`, i.e. get rid of
`prettyCallStack`. Clients might want to inspect the `CallStack` when they
catch an exception.
2. I wonder if adding the `CallStack` to `SomeException` is the best move.
If we do this, we're kinda limited to adding the stack to `SomeException`s
`Show` instance. People (AFAIK) don't usually operate directly on
`SomeException`, they use `catch` and co. to unwrap the exception, which
means giving up the `CallStack`. On the other hand, expecting users to add
`CallStack`s to each exception type is not practical, nor is it clear how
we'd wire that into `throw`.
Perhaps (2) can be solved by keeping the `CallStack` in `SomeException`
and adding a few helper functions, e.g.
{{{#!haskell
catchWithCallStack :: Exception e => IO a -> (e -> CallStack -> IO a) ->
IO a
}}}
Thanks for the suggestion!
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12096#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list