Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Intermediate
Nov 27, 2000



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

Returning a Value from a Function that Throws

A reader asked me the following questions: "Can a function that returns something, throw a exception and still return a value?" Lets' look at a concrete example:

int f()
 if (something)
  throw X();
  return 0;

f() has two exit points: the throw statement and the return statement. On each invocation, f() can exit only from one of these exit points. Thus, syntactically, there is no way that f() can both throw and exception and return a value. At the logical level, there is another reason why it is impossible to return and throw at the same time. When an exception is thrown, it means that the function encountered an irrecoverable error from which it cannot proceed normally and return a meaningful value. On the other hand, if the function can return a meaningful result, there's no reason why an exception should be thrown. The execution path of a return statement and a throw statement are always mutually exclusive.

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