halcon自帶異常處理流程,但是往往會在報錯框彈出后,如果不忽略會導致程序崩潰掉,為此,在mfc編程中,需要針對哈利con處理函數做異常處理,我這里總結了2種方法,樂意和大家分享!
方法1、she_check( )
set_check("~give_error")和set_check("give_error")配合,開關Halcon自己的異常處理,自己獲得錯誤返回值和在通過 get_error_text()獲取錯誤文本信息;
直接上例子說用法,例如:
1 Herror Rtn = H_MSG_TRUE;//正確的返回值 2 char chrErrorText[ 1024 ]; 3 4 set_check("~give_error");//屏蔽 5 Rtn = write_image( hoImgSv, "bmp", 0, strImgPath );//通過獲取錯誤文本信息 6 set_check("give_error");//開啟 7 get_error_text( Rtn, chrErrorText );
方法2、try catch
在mfc中使用try catch會捕獲不到異常,原因是halcon自己先捕獲異常處理了,需要自定義異常處理,並使用halcon的 InstallHHandler()安裝;
例子代碼如下:
//1,自定義異常: void MyExceptionHandler( const HException& except ) { throw except; }; //2,在try catch 使用前,進行安裝自定義異常處理: HException::InstallHHandler( &MyExceptionHandler); //3,調用try catch try { tuple_max( htLength, &htMax ); } catch( HalconCpp::HException &except ) //HalconCpp或者Halcon,具體看halcon版本
{
//異常的處理,例如messagebox
}