AV
Size: a a a
AV
AV
AV
KV
MK
AV
AV
KV
AV
AV
AV
catchAsync will not attempt to catch exceptions thrown asynchronously (again, more on that in the chapter on concurrency).AV
./1
user error (foo)
import Control.Concurrent
import Control.Exception as Raw
import Control.Exception.Safe as Safe
import Foreign.StablePtr
main = do
m <- myThreadId
lock <- newEmptyMVar
_ <- newStablePtr lock
Safe.catch
(do forkIO $ Raw.throwTo m (userError "foo")
takeMVar lock)
(\e -> print (e::SomeException))AV
AV
KV
AV
AV
KV
AV
AV