
#12096: Attach stacktrace information to SomeException -------------------------------------+------------------------------------- Reporter: ndtimofeev | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: Component: Core Libraries | Version: 8.0.1 Resolution: | Keywords: Exceptions 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 simonmar): I quite like the idea of adding the call stack to `SomeException` actually. A lot of rethrowing operations already do the right thing, e.g. `catchJust` works: {{{ catchJust p a handler = catch a handler' where handler' e = case p e of Nothing -> throwIO e Just b -> handler b }}} So does `onException`, and the things that use it (`bracket` etc.) {{{ onException :: IO a -> IO b -> IO a onException io what = io `catch` \e -> do _ <- what throwIO (e :: SomeException) }}} So the places that don't work are those places that are using bare `catch` and re-throwing a more specific exception after doing some filtering on it. For those we should recommend using `catchJust` when possible, and perhaps provide alternative APIs that allow more expressive filtering. In the meantime there will be some places that get the wrong call stacks, but too bad - this is a debugging feature and as such doesn't need to be perfect. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12096#comment:20 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler