Copyright | (c) 2018 David Feuer |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | David.Feuer@gmail.com |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Currently this module only supports adding notes to call stacks, but it may offer more features later.
- callStackNote :: HasCallStack => String -> (HasCallStack => a) -> a
Documentation
callStackNote :: HasCallStack => String -> (HasCallStack => a) -> a Source #
Add a note to the current call stack. This note will be included in the stack trace in case of an error. In the event that the note itself throws an exception, a placeholder will be shown instead.
Example
Suppose we've written
f :: HasCallStack => (HasCallStack => Int -> Int -> Int) -> Int -> Int
f g x = callStackNote ("x = " ++ show x) $ g 5 x
quotTrace :: HasCallStack => Int -> Int -> Int
quotTrace _ 0 = error "divide by zero"
quotTrace x y = x quot
y
calling print $ f quotTrace 0
will print something like
Test: divide by zero CallStack (from HasCallStack): error, called at Test.hs:11:17 in main:Main quotTrace, called at Test.hs:14:18 in main:Main g, called at Test.hs:8:44 in main:Main callStackNote (x = 0) , called at Test.hs:8:9 in main:Main f, called at Test.hs:14:16 in main:Main