mirror of
https://github.com/nlohmann/json.git
synced 2026-10-27 00:08:55 +00:00
Add See also links in both directions between the concept pages (features, home, integration) and the API pages, write API links in code font, give every entry a comment after a dash, and show the callback event figure on the parser callbacks page. Signed-off-by: Niels Lohmann <mail@nlohmann.me>
3.0 KiB
3.0 KiB
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.
classDiagram
direction LR
class std_exception ["std::exception"] {
<<interface>>
}
class json_exception ["basic_json::exception"] {
+const int id
+const char* what() const
}
class json_parse_error ["basic_json::parse_error"] {
+const std::size_t byte
}
class json_invalid_iterator ["basic_json::invalid_iterator"]
class json_type_error ["basic_json::type_error"]
class json_out_of_range ["basic_json::out_of_range"]
class json_other_error ["basic_json::other_error"]
std_exception <|-- json_exception
json_exception <|-- json_parse_error
json_exception <|-- json_invalid_iterator
json_exception <|-- json_type_error
json_exception <|-- json_out_of_range
json_exception <|-- json_other_error
style json_exception fill:#CCCCFF
Class hierarchy of the library's exceptions; arrows point from a derived class to its base class, and the highlighted box is `basic_json::exception`.
Subclasses:
parse_errorfor exceptions indicating a parse errorinvalid_iteratorfor exceptions indicating errors with iteratorstype_errorfor exceptions indicating executing a member function with a wrong typeout_of_rangefor exceptions indicating access out of the defined rangeother_errorfor 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.
```cpp
--8<-- "examples/exception.cpp"
```
Output:
```json
--8<-- "examples/exception.output"
```
See also
- List of exceptions - overview of all exceptions thrown by the library
- Working Without Exceptions - using the library without exceptions
JSON_DIAGNOSTICS- extended exception messages with the path of the failing value- Parsing and Exceptions - parsing alternatives that do not throw
- Debugging - debugging aids
Version history
- Added in version 3.0.0.