[syserr.syserr] # 19 Diagnostics library [[diagnostics]](./#diagnostics) ## 19.5 System error support [[syserr]](syserr#syserr) ### 19.5.8 Class system_error [syserr.syserr] #### [19.5.8.1](#overview) Overview [[syserr.syserr.overview]](syserr.syserr.overview) [1](#overview-1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1518) The class system_error describes an exception object used to report error conditions that have an associated error code[.](#overview-1.sentence-1) Such error conditions typically originate from the operating system or other low-level application program interfaces[.](#overview-1.sentence-2) [2](#overview-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1524) [*Note [1](#overview-note-1)*: If an error represents an out-of-memory condition, implementations are encouraged to throw an exception object of type [bad_alloc](bad.alloc "17.6.4.1 Class bad_­alloc [bad.alloc]") rather than system_error[.](#overview-2.sentence-1) — *end note*] [🔗](#lib:system_error) namespace std {class system_error : public runtime_error {public: system_error(error_code ec, const string& what_arg); system_error(error_code ec, const char* what_arg); system_error(error_code ec); system_error(int ev, const error_category& ecat, const string& what_arg); system_error(int ev, const error_category& ecat, const char* what_arg); system_error(int ev, const error_category& ecat); const error_code& code() const noexcept; const char* what() const noexcept override; };} #### [19.5.8.2](#members) Members [[syserr.syserr.members]](syserr.syserr.members) [🔗](#lib:system_error,constructor) `system_error(error_code ec, const string& what_arg); ` [1](#members-1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1555) *Postconditions*: code() == ec and string_view(what()).find(what_arg.c_str()) != string_view​::​npos[.](#members-1.sentence-1) [🔗](#lib:system_error,constructor_) `system_error(error_code ec, const char* what_arg); ` [2](#members-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1567) *Postconditions*: code() == ec andstring_view(what()).find(what_arg) != string_view​::​npos[.](#members-2.sentence-1) [🔗](#lib:system_error,constructor__) `system_error(error_code ec); ` [3](#members-3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1579) *Postconditions*: code() == ec[.](#members-3.sentence-1) [🔗](#lib:system_error,constructor___) `system_error(int ev, const error_category& ecat, const string& what_arg); ` [4](#members-4) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1590) *Postconditions*: code() == error_code(ev, ecat) and string_view(what()).find(what_arg.c_str()) != string_view​::​npos[.](#members-4.sentence-1) [🔗](#lib:system_error,constructor____) `system_error(int ev, const error_category& ecat, const char* what_arg); ` [5](#members-5) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1602) *Postconditions*: code() == error_code(ev, ecat) and string_view(what()).find(what_arg) != string_view​::​npos[.](#members-5.sentence-1) [🔗](#lib:system_error,constructor_____) `system_error(int ev, const error_category& ecat); ` [6](#members-6) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1614) *Postconditions*: code() == error_code(ev, ecat)[.](#members-6.sentence-1) [🔗](#lib:code,system_error) `const error_code& code() const noexcept; ` [7](#members-7) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1625) *Returns*: ec or error_code(ev, ecat), from the constructor, as appropriate[.](#members-7.sentence-1) [🔗](#lib:what,system_error) `const char* what() const noexcept override; ` [8](#members-8) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1637) *Returns*: An ntbs incorporating the arguments supplied in the constructor[.](#members-8.sentence-1) [*Note [1](#members-note-1)*: The returned ntbs might be the contents of what_arg + ": " + code.message()[.](#members-8.sentence-2) — *end note*]