I'm using a port of the STL found here and trying to debug with a simple try{...}catch{...}
statement. When compiling with the Arduino IDE, I get the following error message:
exception handling disabled, use -fexceptions to enable.
I'm not quite sure what this means. Does the Arduino simply not support exceptions? Or is -fexceptions
a compiler flag I can enable?
2 Answers 2
As you have already found out, add -fexceptions
to the compiler flags. This can be done by modifying the platform.txt
of your Arduino IDE installation.
See https://github.com/arduino/ArduinoCore-avr/blob/master/platform.txt#L28. There is -fno-exceptions
defined, so you have to remove that, too.
-
Perfect, this is the (complete) answer I was looking for.Snail Cadet– Snail Cadet2019年05月14日 13:02:54 +00:00Commented May 14, 2019 at 13:02
Arduino is a very limited platform, and handling exceptions requires quite a bit of hidden code to properly unwind the stack wherever the exception occurs.
So the default is to turn it off and teach users to not use exceptions in arduino and instead other type of error handling.
-
1The default is not to use STL neither.DataFiddler– DataFiddler2019年05月14日 13:38:17 +00:00Commented May 14, 2019 at 13:38
-
It's not just the default; Arduino has no built-in support for the STL.Snail Cadet– Snail Cadet2019年05月14日 13:52:09 +00:00Commented May 14, 2019 at 13:52
-fexceptions
flag to the compiler.