A throw-expression with no operand re-throws the exception currently being handled. Such an expression should appear only in a catch handler or in a function called from within a catch handler. The re-thrown exception object is the original exception object (not a copy). For example:
try { throw CSomeOtherException(); } catch(...) { // Handle all exceptions // Respond (perhaps only partially) to exception // ... throw; // Pass exception to some other handler }
An empty throw statement tells the compiler that the function does not throw any exceptions. It is the equivalent to using__declspec(nothrow). For example: