
I've added this qn and reply to the GHC FAQ http://haskell.org/haskellwiki/GHC/FAQ#The_Foreign_Function_Interface | -----Original Message----- | From: glasgow-haskell-users-bounces@haskell.org [mailto:glasgow-haskell-users-bounces@haskell.org] | On Behalf Of Simon Marlow | Sent: 14 June 2006 11:19 | To: Michael Marte | Cc: GHC Users Mailing List | Subject: Re: Any way to catch runtime errors in a DLL? | | Michael Marte wrote: | | > if a runtime error occurs inside a DLL compiled by ghc (like | > "irrefutable pattern match failed" or exceptions caused by error), | > the application that called the DLL function dies. This is ok for | > development but unacceptable when it happens with a user sitting in | > front of the display. (It has not yet happened but it's only a question | > of time.) | > | > So my question is: Is there any way to catch and process runtime errors? | > I am looking for some way to map those errors to exceptions on the C++ | > side that can be caught if required. It would be ok to kill the Haskell | > runtime system and unload the DLL if necessary. | | The FFI doesn't provide any way to propagate exceptions from Haskell to | the caller of a foreign export, because there's no standard way to do | this. It is your responsibility to catch the exception in Haskell and | return an appropriate error code to the caller. To raise a C++ | exception, you would probably need another C++ wrapper around each | foreign export, translating an error code into the C++ exception. | | Cheers, | Simon | | _______________________________________________ | Glasgow-haskell-users mailing list | Glasgow-haskell-users@haskell.org | http://www.haskell.org/mailman/listinfo/glasgow-haskell-users