In chemfiles, any error will throw an exception. Any program using chemfiles
should thus wrap any call in a try ... catch block, and handle the errors in
any pertinent way.
#include <iostream>
#include "chemfiles.cpp"
int main() {
try {
chemfiles::Trajectory file("filename.xyz");
chemfiles::Frame frame;
file.read(frame);
auto positions = frame.positions();
// Do something here
} catch (const chemfiles::Error& e) {
// Basic error handling logging error to stdout
std::cout << "Error in chemfiles:" << e.what() << std::endl;
return -1;
}
return 0;
}
Any exceptions thown by chemfiles will derive from chemfiles::Error.
Catching chemfiles::Error will then catch any exception thown by chemfiles.
You also can catch any other error if you need finer grain control.
chemfiles::Error derives from std::runtime_error, so it should play
nicely with any exisiting C++ error handling.
chemfiles::Error¶Base exception class for chemfiles library.
Inherits from std::runtime_error
Subclassed by chemfiles::FileError, chemfiles::FormatError, chemfiles::MemoryError, chemfiles::SelectionError
chemfiles::FileError¶Exception for files related failures.
Inherits from chemfiles::Error
chemfiles::MemoryError¶Exception for memory related failures.
Inherits from chemfiles::Error
chemfiles::FormatError¶Exception for formats related failures.
Inherits from chemfiles::Error
chemfiles::SelectionError¶Exception for errors in selections.
Inherits from chemfiles::Error
Chemfiles also send warnings on some malformed files. You can use the set_warning_callback function to register a global callback to use when sending a warning.
chemfiles::set_warning_callback(warning_callback callback)¶Set the global callback for warning events. The default is to print them on the standard error stream.
chemfiles::warning_callback¶Callback type used to process a warning event.