]> https://gitweb.dealii.org/ - dealii.git/commitdiff
NOX: catch std::runtime_error instead of char* for Trilinos 4.2.0 onwards
authorMatthias Maier <tamiko@43-1.org>
Fri, 23 Jun 2023 05:36:22 +0000 (00:36 -0500)
committerMatthias Maier <maier@tamu.edu>
Fri, 23 Jun 2023 05:52:53 +0000 (00:52 -0500)
include/deal.II/trilinos/nox.templates.h

index b33fcfa06755c9df79aeff16bd3dfaa7db30ff56..b3e4bee8fef99bdb2cf73ae975116401545cc4b2 100644 (file)
@@ -1161,12 +1161,21 @@ namespace TrilinosWrappers
                         ExcNOXNoConvergence());
           }
       }
-    // See if NOX returned by triggering an exception. In a sign of generally
-    // poor software design, NOX throws an exception that is not of a class
-    // derived from std::exception, but just a char*. That's a nuisance -- you
-    // just have to know :-(
+    // See if NOX returned by triggering an exception.
+#if DEAL_II_TRILINOS_VERSION_GTE(4, 2, 0)
+    // Starting with Trilinos version 4.2.0 NOX started to throw a
+    // std::runtime_error instead of a plain char*.
+    catch (const std::runtime_error &exc)
+      {
+        const char *s = exc.what();
+#else
+    // In a sign of generally poor software design, NOX prior to Trilinos
+    // version 4.2.0 throws an exception that is not of a class derived
+    // from std::exception, but just a char*. That's a nuisance -- you just
+    // have to know :-(
     catch (const char *s)
       {
+#endif
         // Like above, see if NOX aborted because there was an exception
         // in a user callback. In that case, collate the errors if we can
         // (namely, if the user exception was derived from std::exception),

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.