C++ Logo

std-proposals

Advanced search

Re: extern noexcept

From: Thiago Macieira <thiago_at_[hidden]>
Date: Tue, 24 Sep 2019 08:44:10 -0700
On Tuesday, 24 September 2019 07:28:09 PDT Walt Karas via Std-Proposals wrote:
> Andrey Semashev via Std-Proposals wrote:
> No, because that function (1) may not actually throw, (2) may be inside
> a try block or may not be called in runtime and (3) program termination
> in case of an exception may be intended.
> But points 1 and 2 contradict the premise of the question. try/catch
> statements would I suppose be required to have catch (...) in noexcept
> functions.

You don't need a catch (...), you just need to catch the exceptions that the
throwing function throws in the calls that you will make.

And you do have a catch (...):

> For point 3, is there really a guarantee this will cause
> termination?

Yes.

> Seems like the exception could still be caught higher in the
> call stack, and some objects could potentially not get destroyed. It seems
> better to encourage:
> void calls_throwing_stuff() noxecept{ // stuff}
> to be changed to something like:
> void calls_throwing_stuff() noxecept{ try { // stuff } catch (...)
> std::terminate();}

Why? What observable effect do you expect with this?

-- 
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
   Software Architect - Intel System Software Products

Received on 2019-09-24 10:46:21