From cppreference.com
Defined in header
classbad_array_new_length;(since C++11)std::bad_array_new_length is the type of the object thrown as exceptions by the
to report invalid array lengths if
Array length is negative,
Total size of the new array would exceed implementation-defined maximum value,
The number of initializer-clauses exceeds the number of elements to initialize.
Only the first array dimension may generate this exception; dimensions other than the first are constant expressions and are checked at compile time.
Inheritance diagram
Member functions
(constructor)
constructs a new bad_array_new_length object
(public member function)operator=
replaces the bad_array_new_length object
(public member function)what
returns the explanatory string
(public member function)std::bad_array_new_length::bad_array_new_length
bad_array_new_length()noexcept; (1) (since C++11)bad_array_new_length(constbad_array_new_length&other)noexcept; (2) (since C++11)Constructs a new bad_array_new_length object with an implementation-defined null-terminated byte string which is accessible through
.
1) Default constructor.
2) Copy constructor. If *this and other both have dynamic type std::bad_array_new_length then std::strcmp(what(),other.what())==0.
Parameters
other - another exception object to copy std::bad_array_new_length::operator=
bad_array_new_length&operator=(constbad_array_new_length&other)noexcept;(since C++11)Assigns the contents with those of other.If *this and other both have dynamic type std::bad_array_new_length then std::strcmp(what(),other.what())==0 after assignment.
Parameters
other - another exception object to assign with Return value
*this
std::bad_array_new_length::what
virtualconstchar*what()constnoexcept;(since C++11)
(constexpr since C++26)Returns the explanatory string.
Return value
Pointer to an implementation-defined null-terminated string with explanatory information. The string is suitable for conversion and display as a
. The pointer is guaranteed to be valid at least until the exception object from which it is obtained is destroyed, or until a non-const member function (e.g. copy assignment operator) on the exception object is called.
The returned string is encoded with the ordinary literal encoding during constant evaluation.
(since C++26)Notes
Implementations are allowed but not required to override what().
Inherited from
Inherited from
Member functions
[virtual]
destroys the exception object
(virtual public member function of std::exception)
[virtual]
returns an explanatory string
(virtual public member function of std::exception)
Notes
macroValueStdFeature
__cpp_lib_constexpr_exceptions
(C++26)constexpr for exception types Example
Three conditions where std::bad_array_new_length should be thrown:
Run this code
#include<climits>#include<iostream>#include<new>intmain(){try{intnegative=-1;newint[negative];}catch(conststd::bad_array_new_length&e){std::cout<<"1) "<<e.what()<<": negative size\n";}try{intsmall=1;newint[small]{1,2,3};}catch(conststd::bad_array_new_length&e){std::cout<<"2) "<<e.what()<<": too many initializers\n";}try{longlarge=LONG_MAX;newint[large][1000];}catch(conststd::bad_array_new_length&e){std::cout<<"3) "<<e.what()<<": too large\n";}std::cout<<"End\n";}Possible output:
1) std::bad_array_new_length: negative size 2) std::bad_array_new_length: too many initializers 3) std::bad_array_new_length: too large End See also