#include #include #include #include "opencv2/highgui.hpp"
#include "opencv2/core/core.hpp"
int main()
catch (exception& e)
}
assert.h中的assert 的作用是計算表示式 expression ,如果其值為假(即為 0),那麼它先向 stderr 列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。注意:這裡會呼叫abort直接終止程式。
而cv_assert是計算表示式 expression ,如果其值為假(即為 0),那麼它先向 stderr 列印一條出錯資訊,然後丟擲異常。注意:丟擲異常。
這就是兩者的區別,如果使用cv_assert,我們可以通過捕獲異常而不是程式崩潰,而assert會直接導致程式崩潰。上面這段**即可驗證。
#define cv_assert( expr ) if(!!(expr)) ; else cv::error( cv::exception(cv_stsassert, #expr, cv_func, __file__, __line__) )
opencv原始碼中可以看到,cv_assert僅為乙個巨集定義呼叫了cv::error,其中cv::error作用為列印錯誤資訊,並丟擲異常。
void error( const exception& exc )
if(breakonerror)
throw exc;
}
ASSERT和VERIFY的區別
assert和verify的區別 1 assert與verify巨集在debug模式下作用基本一致,二者都對表示式的值進行計算,如果值為非0,則什麼事也不做 如果值為0,則輸出診斷資訊。2 assert與verify巨集在release模式下效果完全不一樣。assert不計算表示式的值,也不會輸出診...
ASSERT VALID和ASSERT巨集分析
這個巨集都是mfc的除錯巨集.assert valid巨集用來在執行時檢查乙個物件的內部合法性,比如說現在有乙個學生物件,我們知道每個學生的年齡一定大於零,若年齡小於零,則該學生物件肯定有問題。事實上,assert valid巨集就是轉化為物件的成員函式assertvalid 的呼叫,只是這種方法更...
ASSERT VALID和ASSERT巨集分析
這個巨集都是mfc的除錯巨集.assert valid巨集用來在執行時檢查乙個物件的內部合法性,比如說現在有乙個學生物件,我們知道每個學生的年齡一定大於零,若年齡小於零,則該學生物件肯定有問題。事實上,assert valid巨集就是轉化為物件的成員函式assertvalid 的呼叫,只是這種方法更...