Exception safety
BCS
ao at pathlink.com
Fri Dec 12 09:03:39 PST 2008
Reply to Sergey,
> What happens if an extern(Windows) function throws?
>
> Basically I want my export DLL interface functions to fail gracefully.
> What happens if I don't catch? Currently my typical export looks like
> this, and it looks a bit verbose:
>
> extern(Windows) export HRESULT DllRegisterServer()
> {
> try
> {
> doStuff();
> }
> catch(Exception e)
> {
> myTrace("Shit happens. Reason: " ~ e.msg);
> return E_UNEXPECTED;
> }
> catch(Object obj)
> {
> myTrace("Shit happens. Reason: " ~ obj.toString());
> return E_UNEXPECTED;
> }
> catch
> {
> myTrace("Shit happens. Reason: unknown");
> return E_UNEXPECTED;
> }
> return S_OK;
> }
you can burry two of those in a function and get
> extern(Windows) export HRESULT DllRegisterServer()
> {
> try
> {
> doStuff();
> }
> catch(Exception e) { return OhCrud(e); }
> catch{ return OhCrud(); }
> return S_OK;
> }
More information about the Digitalmars-d
mailing list