API
4.0
For C++ developers
|
A class for basic exception functionality. More...
Public Member Functions | |
Exception (const std::string &aMsg="", const std::string &aFile="", int aLine=-1) | |
This constructor is for backward compatibility. More... | |
Exception (const std::string &file, size_t line, const std::string &func) | |
Call this constructor from derived classes to add file, line and function information to the error message. More... | |
Exception (const std::string &file, size_t line, const std::string &func, const std::string &msg) | |
Use this when you want to throw an Exception (with OPENSIM_THROW or OPENSIM_THROW_IF) and also provide a message. More... | |
Exception (const std::string &file, size_t line, const std::string &func, const Object &obj) | |
The message created by this constructor will contain the class name and instance name of the provided Object. More... | |
Exception (const std::string &file, size_t line, const std::string &func, const Object &obj, const std::string &msg) | |
The message created by this constructor will contain the class name and instance name of the provided Object, and also accepts a message. More... | |
virtual | ~Exception () throw () |
void | setMessage (const std::string &aMsg) |
const char * | getMessage () const |
virtual void | print (std::ostream &aOut) const |
const char * | what () const noexcept override |
Protected Member Functions | |
void | addMessage (const std::string &msg) |
Add to the error message that will be returned for the exception. More... | |
Related Functions | |
(Note that these are not member functions.) | |
Macros to throw OpenSim exceptions | |
The purpose of these macros is to aid with consistent message formatting, include file/line/function information in all messages, and to make it easier for developers to produce good messages. | |
#define | OPENSIM_THROW(EXCEPTION, ...) throw EXCEPTION{__FILE__, __LINE__, __func__, __VA_ARGS__}; |
More... | |
#define | OPENSIM_THROW_IF(CONDITION, EXCEPTION, ...) |
This macro checks the given condition and throws the given exception if the condition is true. More... | |
A class for basic exception functionality.
To create exception classes in OpenSim, use the following guidelines. If the intention is to derive from an exception named, for example, BaseException that is part of OpenSim, use the following blueprint:
Exception class manages the concatenation of error messages from all the derived classes. When creating new exceptions, remember to call addMessage() as shown above if the exception class does have any error message.
OpenSim::Exception::Exception | ( | const std::string & | aMsg = "" , |
const std::string & | aFile = "" , |
||
int | aLine = -1 |
||
) |
This constructor is for backward compatibility.
Use the constructor taking file, line, func.
OpenSim::Exception::Exception | ( | const std::string & | file, |
size_t | line, | ||
const std::string & | func | ||
) |
Call this constructor from derived classes to add file, line and function information to the error message.
Use this when throwing Derived classes. Use OPENSIM_THROW_<> macros at throw sites.
OpenSim::Exception::Exception | ( | const std::string & | file, |
size_t | line, | ||
const std::string & | func, | ||
const std::string & | msg | ||
) |
Use this when you want to throw an Exception (with OPENSIM_THROW or OPENSIM_THROW_IF) and also provide a message.
OpenSim::Exception::Exception | ( | const std::string & | file, |
size_t | line, | ||
const std::string & | func, | ||
const Object & | obj | ||
) |
The message created by this constructor will contain the class name and instance name of the provided Object.
Use this when throwing derived classes. Use OPENSIM_THROW_<> macros at throw sites.
OpenSim::Exception::Exception | ( | const std::string & | file, |
size_t | line, | ||
const std::string & | func, | ||
const Object & | obj, | ||
const std::string & | msg | ||
) |
|
inlinevirtual |
|
protected |
Add to the error message that will be returned for the exception.
Referenced by OpenSim::ComponentAlreadyPartOfOwnershipTree::ComponentAlreadyPartOfOwnershipTree(), OpenSim::ComponentHasNoName::ComponentHasNoName(), OpenSim::ComponentHasNoSystem::ComponentHasNoSystem(), OpenSim::ComponentIsAnOrphan::ComponentIsAnOrphan(), OpenSim::ComponentIsRootWithNoSubcomponents::ComponentIsRootWithNoSubcomponents(), OpenSim::ComponentNotFoundOnSpecifiedPath::ComponentNotFoundOnSpecifiedPath(), OpenSim::ConnecteeNotSpecified::ConnecteeNotSpecified(), OpenSim::DataAdapterAlreadyRegistered::DataAdapterAlreadyRegistered(), OpenSim::DataTypeMismatch::DataTypeMismatch(), OpenSim::EmptyFileName::EmptyFileName(), OpenSim::EmptyTable::EmptyTable(), OpenSim::FileDoesNotExist::FileDoesNotExist(), OpenSim::FileExtensionNotFound::FileExtensionNotFound(), OpenSim::FileIsEmpty::FileIsEmpty(), OpenSim::IncorrectMetaDataLength::IncorrectMetaDataLength(), OpenSim::IncorrectNumColumnLabels::IncorrectNumColumnLabels(), OpenSim::IncorrectNumColumns::IncorrectNumColumns(), OpenSim::IncorrectNumMetaDataKeys::IncorrectNumMetaDataKeys(), OpenSim::IncorrectNumRows::IncorrectNumRows(), OpenSim::IncorrectNumTokens::IncorrectNumTokens(), OpenSim::IncorrectTableType::IncorrectTableType(), OpenSim::InputNotConnected::InputNotConnected(), OpenSim::InputNotFound::InputNotFound(), OpenSim::InvalidComponentName::InvalidComponentName(), OpenSim::InvalidPropertyValue::InvalidPropertyValue(), OpenSim::InvalidTimeRange::InvalidTimeRange(), OpenSim::JointFramesAreTheSame::JointFramesAreTheSame(), OpenSim::JointFramesHaveSameBaseFrame::JointFramesHaveSameBaseFrame(), OpenSim::JointHasNoCoordinates::JointHasNoCoordinates(), OpenSim::KeyExists::KeyExists(), OpenSim::KeyMissing::KeyMissing(), OpenSim::MetaDataLengthMismatch::MetaDataLengthMismatch(), OpenSim::MissingMetaData::MissingMetaData(), OpenSim::ModelHasNoSystem::ModelHasNoSystem(), OpenSim::MuscleCannotEquilibrate::MuscleCannotEquilibrate(), OpenSim::NoColumnLabels::NoColumnLabels(), OpenSim::NoRegisteredDataAdapter::NoRegisteredDataAdapter(), OpenSim::NoTableFound::NoTableFound(), OpenSim::OutputNotFound::OutputNotFound(), OpenSim::PhysicalOffsetFramesFormLoop::PhysicalOffsetFramesFormLoop(), OpenSim::RowLengthMismatch::RowLengthMismatch(), OpenSim::SocketNotFound::SocketNotFound(), OpenSim::STODataTypeNotSupported::STODataTypeNotSupported(), OpenSim::SubcomponentsWithDuplicateName::SubcomponentsWithDuplicateName(), OpenSim::TableMissingHeader::TableMissingHeader(), OpenSim::TimeColumnNotIncreasing::TimeColumnNotIncreasing(), OpenSim::TimeOutOfRange::TimeOutOfRange(), OpenSim::TimestampGreaterThanEqualToNext::TimestampGreaterThanEqualToNext(), OpenSim::TimestampLessThanEqualToPrevious::TimestampLessThanEqualToPrevious(), OpenSim::UnexpectedColumnLabel::UnexpectedColumnLabel(), and OpenSim::UnexpectedMetaDataKey::UnexpectedMetaDataKey().
const char* OpenSim::Exception::getMessage | ( | ) | const |
|
virtual |
void OpenSim::Exception::setMessage | ( | const std::string & | aMsg | ) |
|
overridenoexcept |
Referenced by OpenSim::TableReporter_< InputT, ValueT >::implementReport().
|
related |
Referenced by OpenSim::DelimFileAdapter< double >::extendWrite().
|
related |
This macro checks the given condition and throws the given exception if the condition is true.
Here's an example that throws an exception if some result is incorrect, and passes result
and 5
to the constructor of the ResultIsIncorrect
exception:
Referenced by OpenSim::OffsetFrame< PhysicalFrame >::extendConnectToModel(), OpenSim::DelimFileAdapter< double >::extendRead(), and OpenSim::DelimFileAdapter< double >::extendWrite().