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


Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Advanced
Nov 9, 1998

Function Try Blocks

A function try block is a function whose body consists of a try block with its associated handlers (catch-statements). A function try block is probably most often used in a class constructor. It enables you to catch exceptions that might be thrown by a base class constructor, or by a constructor of a member object. However, unlike ordinary exception handling, the handler of a function-try-block merely catches the exception; it cannot handle it. Why is this? Once a constructor of an embedded object or a base class is thrown, the partially constructed object is destroyed as part of the stack unwinding. The handler, however, lets you throw a different exception than the one it caught, preventing a violation of the exception specification:
 
class X{}; //exception class
C::C(const string& s) throw (X); // allowed to throw only an exception of type X
     try
         : str(s) // str's constructor might throw a bad_alloc exception, violating C's exception specification
     {
             // constructor function body
     }
     catch (...) //we get here when an exception is thrown during the construction of str or C
     {
	throw X(); //replace bad_alloc exception with an exception of type X
     }
In this example, a string object is first constructed as a member of class C. String might throw a bad_alloc exception during its construction. The function try block will catch bad_alloc exception, and throw an exception of type X, which is the only one allowed for C's constructor.
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date