module Hans.Threads where import Control.Concurrent (forkFinally,ThreadId) import Control.Exception (fromException,AsyncException(..)) forkNamed :: String -> IO () -> IO ThreadId forkNamed str body = forkFinally body showExn where showExn Right{} = return () showExn (Left e) = case fromException e of Just ThreadKilled -> return () _ -> putStrLn (str ++ ": Exception escaped: " ++ show e)