NOTE -- This program is in the filetutorial/stdexcept.cpp
.
This following example program demonstrates the use of exceptions:
#include <string> // for string #include <stdexcept> // for exception, runtime_error, out_of_range #include <iostream> // for cout int main () { // First we'll incite and catch an exception from the C++ Standard // library class std::string by attempting to replace a substring // starting at a position beyond the end of the string object. try { std::string ().replace (100, 1, 1, 'c'); } catch (std::out_of_range &e) { // Print out the exception string, which in this implementation // includes the location and the name of the function that threw // the exception along with the reason for the exception. std::cout << "Caught an out_of_range exception: " << e.what () << '\n'; } catch (std::exception &e) { std::cout << "Caught an exception of an unexpected type: " << e.what () << '\n'; } catch (...) { std::cout << "Caught an unknown exception\n"; } // Throw another exception. try { throw std::runtime_error ("a runtime error"); } catch (std::runtime_error &e) { std::cout << "Caught a runtime_error exception: " << e.what () << '\n'; } catch (std::exception &e) { std::cout << "Caught an exception of an unexpected type: " << e.what () << '\n'; } catch (...) { std::cout << "Caught an unknown exception\n"; } return 0; }
The exact output of the program is specific to the compiler used to compile it and to the location of the library headers but may look something like this:
Caught an out_of_range exception: /usr/local/stdcxx/include/string.cc:422: std::string& std::string::replace(size_type, size_type, size_type, char_type): argument value 100 out of range [0, 0) Caught a runtime_error exception: a runtime error