JSON for Modern C++ 3.10.4

◆ out_of_range

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer, class BinaryType = std::vector<std::uint8_t>>
using nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::out_of_range = detail::out_of_range

This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

Exceptions have ids 4xx.

name / id example message description
json.exception.out_of_range.401 array index 3 is out of range The provided array index i is larger than size-1.
json.exception.out_of_range.402 array index '-' (3) is out of range The special array index - in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.
json.exception.out_of_range.403 key 'foo' not found The provided key was not found in the JSON object.
json.exception.out_of_range.404 unresolved reference token 'foo' A reference token in a JSON Pointer could not be resolved.
json.exception.out_of_range.405 JSON pointer has no parent The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.
json.exception.out_of_range.406 number overflow parsing '10E1000' A parsed number could not be stored as without changing it to NaN or INF.
json.exception.out_of_range.407 number overflow serializing '9223372036854775808' UBJSON and BSON only support integer numbers up to 9223372036854775807. (until version 3.8.0)
json.exception.out_of_range.408 excessive array size: 8658170730974374167 The size (following #) of an UBJSON array or object exceeds the maximal capacity.
json.exception.out_of_range.409 BSON key cannot contain code point U+0000 (at byte 2) Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string
The following code shows how an out_of_range exception can be caught.
1#include <iostream>
2#include <nlohmann/json.hpp>
4using json = nlohmann::json;
6int main()
8 try
9 {
10 // calling at() for an invalid index
11 json j = {1, 2, 3, 4};
12 j.at(4) = 10;
13 }
14 catch (json::out_of_range& e)
15 {
16 // output exception information
17 std::cout << "message: " << e.what() << '\n'
18 << "exception id: " << e.id << std::endl;
19 }
detail::out_of_range out_of_range
exception indicating access out of the defined range
Definition: json.hpp:17771
basic_json<> json
default JSON class
Definition: json.hpp:3472

Output (play with this example online):
message: [json.exception.out_of_range.401] array index 4 is out of range
exception id: 401
The example code above can be translated with
g++ -std=c++11 -Isingle_include doc/examples/out_of_range.cpp -o out_of_range 
See also
- exception for the base class of the library exceptions
- 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
- other_error for exceptions indicating other library errors
version 3.0.0

Definition at line 17771 of file json.hpp.