Returning a Value from a Function that Throws

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();else  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.


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