libMesh
Public Member Functions | Public Attributes | List of all members
libMesh::PetscSolverException Class Reference

A specialization of the SolverException class for PETSc. More...

#include <petsc_solver_exception.h>

Inheritance diagram for libMesh::PetscSolverException:
[legend]

Public Member Functions

 PetscSolverException (int error_code_in)
 
virtual const char * what () const noexcept override
 Override the what() function to provide a generic error message. More...
 

Public Attributes

int error_code
 The error code generated by the solver. More...
 
std::string what_message
 string which holds the message built in the constructor. More...
 

Detailed Description

A specialization of the SolverException class for PETSc.

Definition at line 50 of file petsc_solver_exception.h.

Constructor & Destructor Documentation

◆ PetscSolverException()

libMesh::PetscSolverException::PetscSolverException ( int  error_code_in)
inline

Definition at line 53 of file petsc_solver_exception.h.

References libMesh::SolverException::error_code, libMesh::libmesh_ignore(), and libMesh::SolverException::what_message.

53  :
54  SolverException(error_code_in)
55  {
56  const char * text;
57  char * specific;
58  auto ierr = PetscErrorMessage(cast_int<PetscErrorCode>(error_code), &text, &specific);
59  // This is one scenario where we ignore the error code
60  // returned by a PETSc function :)
61  libmesh_ignore(ierr);
62 
63  // Usually the "specific" error message string is more useful than
64  // the generic text corresponding to the error_code, since many
65  // SETERRQ calls just use error_code == 1
66  if (specific)
67  what_message = std::string(specific);
68  else if (text)
69  what_message = std::string(text);
70  }
SolverException(int error_code_in)
int error_code
The error code generated by the solver.
std::string what_message
string which holds the message built in the constructor.
void libmesh_ignore(const Args &...)

Member Function Documentation

◆ what()

virtual const char* libMesh::SolverException::what ( ) const
inlineoverridevirtualnoexceptinherited

Override the what() function to provide a generic error message.

Definition at line 125 of file libmesh_exceptions.h.

References libMesh::SolverException::what_message.

126  {
127  // std::string::c_str() is noexcept in C++11, so it's safe to call
128  // in what() because it can't throw.
129  return what_message.c_str();
130  }
std::string what_message
string which holds the message built in the constructor.

Member Data Documentation

◆ error_code

int libMesh::SolverException::error_code
inherited

The error code generated by the solver.

Definition at line 135 of file libmesh_exceptions.h.

Referenced by PetscSolverException(), and libMesh::SolverException::SolverException().

◆ what_message

std::string libMesh::SolverException::what_message
inherited

string which holds the message built in the constructor.

Definition at line 140 of file libmesh_exceptions.h.

Referenced by PetscSolverException(), libMesh::SolverException::SolverException(), and libMesh::SolverException::what().


The documentation for this class was generated from the following file: