- Here is an example on throwing an exception:
vector< float > EMData::calc_fourier_shell_correlation(EMData * with)
{
if (!with) {
throw NullPointerException("NULL input image");
}
if (!EMUtil::is_same_size(this, with)) {
LOGERR("images not same size");
throw ImageFormatException( "images not same size");
}
//...
}
- Here is an example on catching the exceptions:
void foo()
{
EMData* e1 = new EMData();
EMData* e2 = new EMData();
try {
e1->read_image("test1.mrc");
e2->read_image("test2.mrc");
vector<float> v = e1->calc_fourier_shell_correlation(e2);
}
catch (_NullPointerException & null_excp) {
printf("%s\n", null_excp.what());
// do something
}
catch (E2Exception & exception) {
printf("%s\n", exception.what());
}
}
- Note: NOTE: A XYZ exception is thrown as XYZException, but caught as _XYZException. Be aware of the "_".
- For the possible Exception types. please refer the EMAN2 code in "exception.h".