Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[except.uncaught] Tidy the specification for uncaught exceptions #7276

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 25 additions & 20 deletions source/exceptions.tex
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,26 @@
the selected constructor is odr-used\iref{basic.def.odr} and
the destructor of \tcode{T} is potentially invoked\iref{class.dtor}.

\pnum
\indextext{exception handling!uncaught}%
An exception is considered \defnx{uncaught}{uncaught exception}
after completing the initialization of the exception object
until completing the activation of a handler for the exception\iref{except.handle}.
\begin{note}
As a consequence, an exception is considered uncaught
during any stack unwinding resulting from it being thrown.
\end{note}

\pnum
\indexlibraryglobal{uncaught_exceptions}%
If an exception is rethrown\iref{expr.throw,propagation},
it is considered uncaught from the point of rethrow
until the rethrown exception is caught.
\begin{note}
The function \tcode{std::uncaught_exceptions}\iref{uncaught.exceptions}
returns the number of uncaught exceptions in the current thread.
\end{note}

\pnum
\indextext{exception handling!rethrow}%
\indextext{rethrow|see{exception handling, rethrow}}%
Expand All @@ -331,7 +351,7 @@
\indextext{exception handling!terminate called@\tcode{terminate} called}%
\indextext{\idxcode{terminate}!called}%
If the exception handling mechanism
handling an uncaught exception\iref{except.uncaught}
handling an uncaught exception
directly invokes a function that exits via an
exception, the function \tcode{std::terminate} is invoked\iref{except.terminate}.
\begin{example}
Expand Down Expand Up @@ -1003,8 +1023,10 @@
The function \tcode{std::terminate}\iref{except.terminate}
is used by the exception
handling mechanism for coping with errors related to the exception handling
mechanism itself. The function
\tcode{std::current_exception()}\iref{propagation} and the class
mechanism itself.
The function \tcode{std::uncaught_exceptions}\iref{uncaught.exceptions}
reports how many exceptions are uncaught in the current thread.
The function \tcode{std::current_exception}\iref{propagation} and the class
\tcode{std::nested_exception}\iref{except.nested} can be used by a program to
capture the currently handled exception.

Expand Down Expand Up @@ -1127,21 +1149,4 @@
prematurely based on a determination that the unwind process
will eventually cause an invocation of the function
\tcode{std::terminate}.

\rSec2[except.uncaught]{The \tcode{std::uncaught_exceptions} function}%
\indexlibraryglobal{uncaught_exceptions}

\pnum
An exception is considered uncaught
after completing the initialization of the exception object\iref{except.throw}
until completing the activation of a handler for the exception\iref{except.handle}.
\begin{note}
As a consequence, an exception is considered uncaught
during any stack unwinding resulting from it being thrown.
\end{note}
If an exception is rethrown\iref{expr.throw,propagation},
it is considered uncaught from the point of rethrow
until the rethrown exception is caught.
The function \tcode{std::uncaught_exceptions}\iref{uncaught.exceptions}
returns the number of uncaught exceptions in the current thread.%
\indextext{exception handling|)}
2 changes: 1 addition & 1 deletion source/support.tex
Original file line number Diff line number Diff line change
Expand Up @@ -4013,7 +4013,7 @@
\begin{itemdescr}
\pnum
\returns
The number of uncaught exceptions\iref{except.uncaught}.
The number of uncaught exceptions\iref{except.throw} in the current thread.

\pnum
\remarks
Expand Down
3 changes: 3 additions & 0 deletions source/xrefdelta.tex
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@
\movedxref{stoptoken.cons}{stopsource}
\movedxref{stoptoken.nonmembers}{stopsource}

% https://github.com/cplusplus/draft/pull/7276
\movedxref{except.uncaught}{except.throw}

% https://github.com/cplusplus/draft/pull/7345
\movedxref{basic.stc.inherit}{basic.stc.general}

Expand Down
Loading