Any way to catch runtime errors in a DLL?

Simon Peyton-Jones simonpj at microsoft.com
Wed Jun 14 07:13:01 EDT 2006


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 at haskell.org
[mailto:glasgow-haskell-users-bounces at 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 at haskell.org
| http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


More information about the Glasgow-haskell-users mailing list