很多函數(shù),都會(huì)對(duì)參數(shù)的有效性進(jìn)行判斷,不符合要求,直接彈對(duì)話框,然后程序崩潰,逼得你不得不正確調(diào)用他。這個(gè)屬于編程的邏輯錯(cuò)誤,就像assert一樣,用于排除編碼錯(cuò)誤,這和業(yè)務(wù)錯(cuò)誤處理的層次是不同的。
一般,我們仿照這種模式,如下
如果不想這么麻煩,直接用OPENCV_ASSERT是一樣的。比如:
OPENCV_ASSERT(pImgGray != NULL, "TestCvError", "Null pointer to pImgGray");
問(wèn)題是,有時(shí)候產(chǎn)品未必能夠很好的測(cè)試,總有bug,而且要交付使用,總不能讓用戶面對(duì)錯(cuò)誤彈出窗口吧,這時(shí)候在程序的初始化部分,寫(xiě)入如下代碼:
在release版本里面將gui報(bào)錯(cuò)禁用掉。這時(shí)候,如果內(nèi)存越界、參數(shù)錯(cuò)誤,程序異常退出,看門(mén)狗起作用。
這些機(jī)制,查看cxerror.h/cxerror.cpp就能明白了。
聯(lián)系客服