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



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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
         : 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.



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