| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /* C++ exception handling example
- This example code is in the Public Domain (or CC0 licensed, at your option.)
- Unless required by applicable law or agreed to in writing, this
- software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
- CONDITIONS OF ANY KIND, either express or implied.
- */
- #include <iostream>
- using std::cout;
- using std::endl;
- using std::runtime_error;
- /* A simple class which may throw an exception from constructor */
- class Throwing
- {
- public:
- Throwing(int arg)
- : m_arg(arg)
- {
- cout << "In constructor, arg=" << arg << endl;
- if (arg == 0) {
- throw runtime_error("Exception in constructor");
- }
- }
- ~Throwing()
- {
- cout << "In destructor, m_arg=" << m_arg << endl;
- }
- protected:
- int m_arg;
- };
- /* Inside .cpp file, app_main function must be declared with C linkage */
- extern "C" void app_main()
- {
- cout << "app_main starting" << endl;
- try {
- /* This will succeed */
- Throwing obj1(42);
- /* This will throw an exception */
- Throwing obj2(0);
- cout << "This will not be printed" << endl;
- } catch (const runtime_error &e) {
- cout << "Exception caught: " << e.what() << endl;
- }
- cout << "app_main done" << endl;
- }
|