From 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 7 Apr 2024 13:41:34 -0500 Subject: new repository --- devdocs/gcc~13/exceptions.html | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 devdocs/gcc~13/exceptions.html (limited to 'devdocs/gcc~13/exceptions.html') diff --git a/devdocs/gcc~13/exceptions.html b/devdocs/gcc~13/exceptions.html new file mode 100644 index 00000000..f95c5b07 --- /dev/null +++ b/devdocs/gcc~13/exceptions.html @@ -0,0 +1,33 @@ +

8.7 Exceptions

GNU Objective-C provides exception support built into the language, as in the following example:

@try {
+  …
+     @throw expr;
+  …
+}
+@catch (AnObjCClass *exc) {
+  …
+    @throw expr;
+  …
+    @throw;
+  …
+}
+@catch (AnotherClass *exc) {
+  …
+}
+@catch (id allOthers) {
+  …
+}
+@finally {
+  …
+    @throw expr;
+  …
+}
+

The @throw statement may appear anywhere in an Objective-C or Objective-C++ program; when used inside of a @catch block, the @throw may appear without an argument (as shown above), in which case the object caught by the @catch will be rethrown.

Note that only (pointers to) Objective-C objects may be thrown and caught using this scheme. When an object is thrown, it will be caught by the nearest @catch clause capable of handling objects of that type, analogously to how catch blocks work in C++ and Java. A @catch(id …) clause (as shown above) may also be provided to catch any and all Objective-C exceptions not caught by previous @catch clauses (if any).

The @finally clause, if present, will be executed upon exit from the immediately preceding @try … @catch section. This will happen regardless of whether any exceptions are thrown, caught or rethrown inside the @try … @catch section, analogously to the behavior of the finally clause in Java.

There are several caveats to using the new exception mechanism:

+

+ © Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
+ https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Exceptions.html +

+
-- cgit v1.2.3