[docs] Add a pointer to ExitOnError to the discussion of handleErrors in the

programmer's manual.

ExitOnError is often a better alternative to handleErrors for tool code. This
patch makes it easier to find the ExitOnError discussion when reading the
handleErrors section.

Thanks to Peter Collingbourne for the suggestion.

llvm-svn: 286167
This commit is contained in:
Lang Hames 2016-11-07 22:33:13 +00:00
parent c784b36fca
commit 19a2308afd
1 changed files with 9 additions and 2 deletions

View File

@ -469,8 +469,8 @@ a variadic list of "handlers", each of which must be a callable type (a
function, lambda, or class with a call operator) with one argument. The
``handleErrors`` function will visit each handler in the sequence and check its
argument type against the dynamic type of the error, running the first handler
that matches. This is the same process that is used for catch clauses in C++
exceptions.
that matches. This is the same decision process that is used decide which catch
clause to run for a C++ exception.
Since the list of handlers passed to ``handleErrors`` may not cover every error
type that can occur, the ``handleErrors`` function also returns an Error value
@ -500,6 +500,11 @@ elsewhere in the program can easily turn a formerly exhaustive list of errors
into a non-exhaustive list, risking unexpected program termination. Where
possible, use handleErrors and propagate unknown errors up the stack instead.
For tool code, where errors can be handled by printing an error message then
exiting with an error code, the :ref:`ExitOnError <err_exitonerr>` utility
may be a better choice than handleErrors, as it simplifies control flow when
calling fallible functions.
StringError
"""""""""""
@ -580,6 +585,8 @@ actually recognises three different forms of handler signature:
Any error returned from a handler will be returned from the ``handleErrors``
function so that it can be handled itself, or propagated up the stack.
.. _err_exitonerr:
Using ExitOnError to simplify tool code
"""""""""""""""""""""""""""""""""""""""