相关疑难解决方法(0)

如何捕获在C函数调用的Haskell回调函数中抛出的Haskell异常?

有没有什么好方法可以捕获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)

haskell exception ffi

12
推荐指数
1
解决办法
302
查看次数

标签 统计

exception ×1

ffi ×1

haskell ×1