LSSTApplications  19.0.0-14-gb0260a2+d60062ef16,20.0.0+1540ce6389,20.0.0+7c6b12c2f9,20.0.0+ae956f52c5,20.0.0+be870186d9,20.0.0+e2e26847c2,20.0.0-1-g10df615+7683e4f082,20.0.0-1-g253301a+7c6b12c2f9,20.0.0-1-g2b7511a+46a6078777,20.0.0-1-g3dda6ea+606b36f8c0,20.0.0-1-g4d801e7+901ee84527,20.0.0-1-g5b95a8c+a5fa15ec54,20.0.0-1-gb058bd0+46a6078777,20.0.0-1-gb88604f+acecce4127,20.0.0-1-gc96f8cb+61a4a056b1,20.0.0-1-gedffbd8+4f0e391d5e,20.0.0-10-g0891cd99+aadc987f3e,20.0.0-10-g9a20bd332+576ca7b471,20.0.0-17-gcdbda88+ed0d4927ab,20.0.0-2-g4dae9ad+61a4a056b1,20.0.0-2-g61b8584+85c46248f3,20.0.0-2-gb780d76+f45b7d88f4,20.0.0-2-gf072044+7c6b12c2f9,20.0.0-21-g9bbb7f7+61a4a056b1,20.0.0-22-gc512666+9eba1c4719,20.0.0-23-g8900aa8+68630f7098,20.0.0-3-g1653f94+85c46248f3,20.0.0-3-g4cc78c6+63636aeed8,20.0.0-3-g750bffe+e05f822de9,20.0.0-3-gbd60e8c+ff10c6d78d,20.0.0-32-g15a0e07c+ff1c9f120b,20.0.0-4-g97dc21a+68630f7098,20.0.0-4-gfea843c+f45b7d88f4,20.0.0-5-g357b56b+f45b7d88f4,20.0.0-6-g9a5b7a1+2c4171520d,20.0.0-61-g4de25fb+e4dd172200,20.0.0-7-gcda7bf1+85e953d7e4,w.2020.43
LSSTDataManagementBasePackage
Public Member Functions | Static Public Member Functions | List of all members
lsst.pex::policy::UnsupportedSyntax Class Reference

an exception thrown because syntax was encountered that is legal for the format being parsed but which is not supported for encoding Policies. More...

#include <parserexceptions.h>

Inheritance diagram for lsst.pex::policy::UnsupportedSyntax:
lsst.pex::policy::SyntaxError lsst.pex::policy::ParserError lsst.pex::exceptions::RuntimeError lsst.pex::exceptions::Exception std::exception

Public Member Functions

 UnsupportedSyntax (POL_EARGS_TYPED)
 Create an exception the exception with a default message. More...
 
 UnsupportedSyntax (POL_EARGS_TYPED, const std::string &msg)
 Create an exception the exception with a given message. More...
 
 UnsupportedSyntax (POL_EARGS_TYPED, const std::string &msg, int lineno)
 Create an exception the exception with a given message. More...
 
virtual char const * getType () const throw ()
 Return the fully-specified C++ type of a pointer to the exception. More...
 
virtual lsst::pex::exceptions::Exceptionclone () const
 Return a copy of the exception as an Exception pointer. More...
 
void addMessage (char const *file, int line, char const *func, std::string const &message)
 Add a tracepoint and a message to an exception before rethrowing it (access via LSST_EXCEPT_ADD). More...
 
Traceback const & getTraceback (void) const noexcept
 Retrieve the list of tracepoints associated with an exception. More...
 
virtual std::ostreamaddToStream (std::ostream &stream) const
 Add a text representation of this exception, including its traceback with messages, to a stream. More...
 
virtual char const * what (void) const noexcept
 Return a character string summarizing this exception. More...
 
what (T... args)
 

Static Public Member Functions

static std::string makeLocatedMessage (const std::string &msg, int lineno)
 

Detailed Description

an exception thrown because syntax was encountered that is legal for the format being parsed but which is not supported for encoding Policies.

Definition at line 186 of file parserexceptions.h.

Constructor & Destructor Documentation

◆ UnsupportedSyntax() [1/3]

lsst.pex::policy::UnsupportedSyntax::UnsupportedSyntax ( POL_EARGS_TYPED  )
inline

Create an exception the exception with a default message.

Definition at line 191 of file parserexceptions.h.

191 : SyntaxError(POL_EARGS_UNTYPED, "Unsupported syntax error") {}

◆ UnsupportedSyntax() [2/3]

lsst.pex::policy::UnsupportedSyntax::UnsupportedSyntax ( POL_EARGS_TYPED  ,
const std::string msg 
)
inline

Create an exception the exception with a given message.

Parameters
msga message describing the problem.

Definition at line 197 of file parserexceptions.h.

◆ UnsupportedSyntax() [3/3]

lsst.pex::policy::UnsupportedSyntax::UnsupportedSyntax ( POL_EARGS_TYPED  ,
const std::string msg,
int  lineno 
)
inline

Create an exception the exception with a given message.

Parameters
msga message describing the problem.
linenoa line number in the file (or stream) being parsed where the problem occurred. The first line of the file is typically line 1.

Definition at line 206 of file parserexceptions.h.

207  : SyntaxError(POL_EARGS_UNTYPED, msg, lineno) {}

Member Function Documentation

◆ addMessage()

void Exception::addMessage ( char const *  file,
int  line,
char const *  func,
std::string const &  message 
)
inherited

Add a tracepoint and a message to an exception before rethrowing it (access via LSST_EXCEPT_ADD).

Parameters
[in]fileFilename (automatically passed in by macro).
[in]lineLine number (automatically passed in by macro).
[in]funcFunction name (automatically passed in by macro).
[in]messageAdditional message to associate with this rethrow.

Definition at line 49 of file Exception.cc.

49  {
50  std::ostringstream stream;
51  stream << _message;
52  if (_traceback.empty()) {
53  // This means the message-only constructor was used, which should only happen
54  // from Python...but this method isn't accessible from Python, so maybe
55  // this Exception was thrown in Python, then passed back to C++. Or, more
56  // likely, someone didn't read the warning and threw this exception in C++
57  // without using LSST_EXCEPT.
58  // But, because we don't have a traceback for that first message, we can't
59  // add one here without messing up the stringification logic later. Since
60  // this is a rare case (and should be considered a bug, but we don't want
61  // exception code throwing its own exceptions unless it absolutely has to),
62  // we'll proceed by just appending the message and ignoring the traceback.
63  stream << "; " << message;
64  } else {
65  if (_traceback.size() == static_cast<std::size_t>(1)) {
66  // The original message doesn't have an index (because it's faster,
67  // and there's no need if there's only one), so when we add the second,
68  // we have to give it an index.
69  stream << " {0}; ";
70  } else {
71  stream << "; ";
72  }
73  stream << message << " {" << _traceback.size() << "}";
74  _traceback.push_back(Tracepoint(file, line, func, message));
75  }
76  _message = stream.str();
77 }

◆ addToStream()

std::ostream & Exception::addToStream ( std::ostream stream) const
virtualinherited

Add a text representation of this exception, including its traceback with messages, to a stream.

Parameters
[in]streamReference to an output stream.
Returns
Reference to the output stream after adding the text.

Definition at line 81 of file Exception.cc.

81  {
82  if (_traceback.empty()) {
83  // The exception was raised in Python, so we don't include the traceback, the type, or any
84  // newlines, because Python will print those itself.
85  stream << _message;
86  } else {
87  stream << std::endl; // Start with a newline to separate our stuff from Pythons "<type>: " prefix.
88  for (std::size_t i = 0; i != _traceback.size(); ++i) {
89  stream << " File \"" << _traceback[i]._file << "\", line " << _traceback[i]._line << ", in "
90  << _traceback[i]._func << std::endl;
91  stream << " " << _traceback[i]._message << " {" << i << "}" << std::endl;
92  }
94  stream << type << ": '" << _message << "'" << std::endl;
95  }
96  return stream;
97 }

◆ clone()

virtual lsst::pex::exceptions::Exception* lsst.pex::policy::UnsupportedSyntax::clone ( ) const
virtual

Return a copy of the exception as an Exception pointer.

Can be overridden by derived classes that add data or methods.

Returns
Pointer to a copy of the exception.

Reimplemented from lsst.pex::policy::SyntaxError.

◆ getTraceback()

Traceback const & Exception::getTraceback ( void  ) const
noexceptinherited

Retrieve the list of tracepoints associated with an exception.

Definition at line 79 of file Exception.cc.

79 { return _traceback; }

◆ getType()

virtual char const* lsst.pex::policy::UnsupportedSyntax::getType ( ) const
throw (
)
virtual

Return the fully-specified C++ type of a pointer to the exception.

This is overridden by derived classes (automatically if the LSST_EXCEPTION_TYPE macro is used). It is used by the Python interface.

Returns
String with the C++ type; does not need to be freed/deleted.

Reimplemented from lsst.pex::policy::SyntaxError.

◆ makeLocatedMessage()

static std::string lsst.pex::policy::ParserError::makeLocatedMessage ( const std::string msg,
int  lineno 
)
inlinestaticinherited

Definition at line 72 of file parserexceptions.h.

72  {
74  out << "Policy Parsing Error:" << lineno << ": " << msg << std::ends;
75  return out.str();
76  }

◆ what()

char const * Exception::what ( void  ) const
virtualnoexceptinherited

Return a character string summarizing this exception.

This combines all the messages added to the exception, but not the type or traceback (use the stream operator to get this more detailed information).

Not allowed to throw any exceptions.

Returns
String representation; does not need to be freed/deleted.

Definition at line 99 of file Exception.cc.

99 { return _message.c_str(); }

The documentation for this class was generated from the following file:
std::strlen
T strlen(T... args)
std::string
STL class.
std::vector::size
T size(T... args)
std::ends
T ends(T... args)
std::vector::push_back
T push_back(T... args)
POL_EARGS_UNTYPED
#define POL_EARGS_UNTYPED
Definition: exceptions.h:39
lsst.pex::policy::SyntaxError::SyntaxError
SyntaxError(POL_EARGS_TYPED)
Create an exception the exception with a default message.
Definition: parserexceptions.h:129
std::string::c_str
T c_str(T... args)
lsst::afw.display.ds9.line
def line(points, frame=None, origin=afwImage.PARENT, symbs=False, ctype=None, size=0.5)
Definition: ds9.py:105
std::ostringstream
STL class.
lsst.pex::exceptions::Exception::getType
virtual char const * getType(void) const noexcept
Return the fully-specified C++ type of a pointer to the exception.
Definition: Exception.cc:101
std::endl
T endl(T... args)
type
table::Key< int > type
Definition: Detector.cc:163
lsst.display.ds9.ds9.file
file
Definition: ds9.py:39
std::vector::empty
T empty(T... args)
std::ostringstream::str
T str(T... args)
std::size_t