devxlogo

Exception Type Match

Exception Type Match

When an exception is thrown, the exception handling mechanism searches for a matching handler for it. The matching rules for exceptions are more restrictive than the matching rules for function overloading. For example:

 try{  throw int();}catch (unsigned int) //will not catch the exception from previous try-block{		 }

The exception thrown is of type int, whereas the handler expects an unsigned int. The exception handling mechanism does not consider these to be matching types, and as a result, the thrown exception is not caught. The matching rules for exceptions allow only a limited set of conversions. For an exception E and a handler taking T or T&, the match is valid if T and E are of the same type (ignoring const and volatile specifiers), or if E is publicly derived from T. If E and T are pointers, the match is valid if E and T are of the same type or if E is a pointer to an object publicly derived from T.

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist