有没有什么好方法可以捕获haskell异常,它被ac函数调用的haskell回调函数抛出?
例如,让我有一个简单的c函数,它只调用给定的回调,
void callmeback ( void (*callback) () ) {
callback ();
}
Run Code Online (Sandbox Code Playgroud)
以及通过ffi使用此功能的haskell代码.
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module Main (main) where
import Foreign
import Control.Exception
import Data.Typeable
foreign import ccall safe "wrapper"
mkCallback :: IO () -> IO (FunPtr (IO ()))
foreign import ccall safe "callmeback"
callmeback :: FunPtr (IO ()) -> IO ()
data AnError = AnError String deriving (Show, Eq, Typeable)
instance Exception AnError
callback :: IO ()
callback = throwIO $ AnError …Run Code Online (Sandbox Code Playgroud)