Skip to content

Commit

Permalink
Merge pull request #15450 from tamiko/fix_nox_exception
Browse files Browse the repository at this point in the history
NOX: catch std::runtime_error instead of char* for Trilinos 14.2.0 onwards
  • Loading branch information
bangerth committed Jun 23, 2023
2 parents fbc628e + e9ff803 commit b3a6131
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions include/deal.II/trilinos/nox.templates.h
Original file line number Diff line number Diff line change
Expand Up @@ -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(14, 2, 0)
// Starting with Trilinos version 14.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 14.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),
Expand Down

0 comments on commit b3a6131

Please sign in to comment.