385
Comment:
|
1332
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
* Here is an example on throwing an exception: {{{vector< float > EMData::calc_fourier_shell_correlation(EMData * with) { |
'''How to use Exception handling in EMAN2?''' * Here is an example on throwing an exception: {{{ vector< float > EMData::calc_fourier_shell_correlation(EMData * with) { |
Line 7: | Line 9: |
Line 11: | Line 12: |
} | } |
Line 15: | Line 16: |
* 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 "[http://blake.bcm.edu/eman2/doxygen_html/exception_8h.html exception.h]". You can add new exception type as a sub class of [http://blake.bcm.edu/eman2/doxygen_html/classEMAN_1_1E2Exception.html E2Exception]. |
How to use Exception handling in EMAN2?
- 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 "[http://blake.bcm.edu/eman2/doxygen_html/exception_8h.html exception.h]". You can add new exception type as a sub class of [http://blake.bcm.edu/eman2/doxygen_html/classEMAN_1_1E2Exception.html E2Exception].