dcsimg
Login | Register   
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


Tip of the Day
Language: C++
Expertise: Intermediate
Sep 10, 1998

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


Exceptions are Always Passed by Value

The exception handling (EH) mechanism disables the possibility of passing a thrown exception by reference or through a pointer. This is due to the way this mechanism is implemented: when an exception is thrown, the mechanism first searches for an appropriate handler in the current scope. If such handler does not exist, all local objects are destroyed, the exception object itself is copied on the stack of the function that is higher in the calling chain, and only then is the current scope exited. This process is very similar to a sequence of return statements, each returning the same object by value to its caller. The "stack unwinding" process is iterative and continues until an appropriate handler has been found or else the program terminates. Why is it still useful to declare a handler as if it caught an exception by reference? Simply, in order to allow a handler to catch any exception derived from the specified type:
 
class ExBase {/*_*/};
class FileEx: public ExBase {/*_*/};

void Write(FILE *pf) {
if (pf == NULL) throw FileEx(); 
}
void main ()
{
try { Write(NULL); //will cause a FileEx exception to be thrown 
}
catch(ExBase& exception) {//catch ExBase or any object derived from it--by value
//diagnostics and remedies
}
}
Of course, copying objects repeatedly is a costly process but it occurs only when an exception is thrown--something that should happen in abnormal and rare conditions, during which performance is negligible, compared to application's integrity and correctness.
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
×
We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.
Thanks for your registration, follow us on our social networks to keep up-to-date