Now DMD doesn't support thorowing C++ exceptions through D function: extern(C++) void throwEx(); //compiled by G++ and throws exception extern(C++) void dFunc(void*) { throwEx(); } catchException(&dFunc, ...); //terminate programm instead of catch it. Should be works in gdc