OVMS3-idf/examples/system/cpp_exceptions
2019-09-16 16:18:48 +10:00
..
main tools: Mass fixing of empty prototypes (for -Wstrict-prototypes) 2019-08-01 16:28:56 +07:00
CMakeLists.txt asio: examples renamed to have consistent binary names when build in make and CMake 2018-10-17 15:00:26 +02:00
example_test.py ci: limit example test to ESP32s 2019-09-04 10:53:25 +10:00
Makefile examples: add C++ exception handling example 2018-09-04 21:00:14 +08:00
README.md examples: Update system examples README 2019-08-28 16:19:40 +08:00
sdkconfig.defaults Rename Kconfig options (root) 2019-05-21 09:09:01 +02:00

Example: C++ exception handling

(See the README.md file in the upper level 'examples' directory for more information about examples.)

This example demonstrates usage of C++ exceptions in ESP-IDF.

By default, C++ exceptions support is disabled in ESP-IDF. It can be enabled using CONFIG_COMPILER_CXX_EXCEPTIONS configuration option.

In this example, the sdkconfig.defaults file sets the CONFIG_COMPILER_CXX_EXCEPTIONS option. This enables both compile time support (-fexceptions compiler flag) and run-time support for C++ exception handling.

The example source code declares a class which can throw exception from the constructor if the argument provided is equal to 0. This is used to demonstrate that exceptions can be thrown and caught using standard C++ facilities.

Note: Due to the use of the C++ exceptions, this example is written in C++ instead of C.

How to use example

Hardware Required

This example should be able to run on any commonly available ESP32 development board.

Configure the project

idf.py menuconfig

Build and Flash

idf.py -p PORT flash monitor

(Replace PORT with the name of the serial port.)

(To exit the serial monitor, type Ctrl-].)

See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.

Example Output

app_main starting
In constructor, arg=42
In constructor, arg=0
In destructor, m_arg=42
Exception caught: Exception in constructor
app_main done