# Motivation

This section describes techniques currently used to report and handle failures in functions, it also shows why these techniques might be insufficient.

If you just want to learn how to use Outcome library go straight to Tutorial section.

note

Motivation section of this documentation is not complete yet.

1. Exceptions

   Exceptions with their good and bad sides.

2. errno

   errno with their good and bad sides.

3. Error codes

   Error codes with their good and bad sides.

4. std::error_code

   Overview of std::error_code

5. Plugging a library into `std::error_code`

   Illustrates how you can hook into the `std::error_code` system from the Standard Library in order to work with your own set of error codes.

6. Plugging a library into `boost::system::error_code`

   Illustrates how you can hook into the `boost::system::error_code` system from Boost in order to work with your own set of error codes.

7. Narrow contracts

   Describes narrow-contract functions that do not work for all input values, and advantage of using them.

Last revised: June 27, 2019 at 16:00:40 +0100