esp-idf/examples/cxx/exceptions
2023-04-06 04:30:35 +00:00
..
main Build & config: Remove leftover files from the unsupported "make" build system 2021-11-11 15:32:36 +01:00
CMakeLists.txt tools: Increase the minimal supported CMake version to 3.16 2022-06-01 06:35:02 +00:00
pytest_examples_cxx_exceptions.py ci: migrate examples/cxx ttfw test scripts to pytest 2023-04-06 04:30:35 +00:00
README.md esp32h2: add build test 2023-01-17 10:29:04 +08:00
sdkconfig.ci example_tests: Deletes usage esp32c3 ECO0 in CI (by default ECO3) 2021-09-24 13:55:07 +08:00
sdkconfig.defaults C++: Moved all C++ examples to own folder 2020-02-18 12:48:57 +08:00

Supported Targets ESP32 ESP32-C2 ESP32-C3 ESP32-C6 ESP32-H2 ESP32-S2 ESP32-S3

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