Skip to content

# nlohmann::basic_json::exception

    class exception : public std::exception;

This class is an extension of `std::exception` objects with a member `id` for exception ids. It is used as the base class for all exceptions thrown by the `basic_json` class. This class can hence be used as "wildcard" to catch exceptions, see example below.

Subclasses:

- `parse_error` for exceptions indicating a parse error
- `invalid_iterator` for exceptions indicating errors with iterators
- `type_error` for exceptions indicating executing a member function with a wrong type
- `out_of_range` for exceptions indicating access out of the defined range
- `other_error` for exceptions indicating other library errors

## Member functions

- what - returns explanatory string

## Member variables

- id - the id of the exception

## Notes

To have nothrow-copy-constructible exceptions, we internally use `std::runtime_error` which can cope with arbitrary-length error messages. Intermediate strings are built with static functions and then passed to the actual constructor.

## Examples

Example

The following code shows how arbitrary library exceptions can be caught.

    #include <iostream>
    #include <nlohmann/json.hpp>

    using json = nlohmann::json;

    int main()
    {
        try
        {
            // calling at() for a non-existing key
            json j = {{"foo", "bar"}};
            json k = j.at("non-existing");
        }
        catch (json::exception& e)
        {
            // output exception information
            std::cout << "message: " << e.what() << '\n'
                      << "exception id: " << e.id << std::endl;
        }
    }

Output:

    message: [json.exception.out_of_range.403] key 'non-existing' not found
    exception id: 403

## See also

List of exceptions

## Version history

- Since version 3.0.0.

Back to top