Test case: $ cat except.m #include <objc/Object.h>
@interface E: Object @end @implementation E @end int main(int argc, char* argv[]) { @try { @throw [E new]; } @catch(E *e) { } return 0; } $ gcc -Wall -O2 -g -lobjc except.m -o except $ ./except Aborted (core dumped) $ No warnings or errors a compile time and a completely unexpected runtime failure. pinskia told me to link to: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11813 -- Summary: @try/@throw/@catch/@finally usage without -fexeceptions compiles without warning/error Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: objc AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: nmiell at comcast dot net http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32530