美文网首页
c++有时候抓不住halcon的异常的解决办法

c++有时候抓不住halcon的异常的解决办法

作者: 卡拉肖克_潘 | 来源:发表于2020-07-29 17:31 被阅读0次

    之前怀疑过这件事,但是从来没有真正验证过,据说原因是halcon自己先捕获异常处理了,需要自定义异常处理,并使用halcon的 InstallHHandler()安装后才能抓住。现在对比一下看看。直接上代码:

    #define HCPP_LEGACY_API
    #include "HalconCpp.h"
    using namespace HalconCpp;
    
    void ExceptionHandler1(const HException& except)
    {
        Herror heror = except.ErrorCode();
        throw(except);
    }
    void action()
    {
        HTuple  hv_a, hv_Max,  hv_c;
        HTuple  hv_b;   
    //  HException::InstallHHandler(&ExceptionHandler1);//halcon的异常还得halcon抓,放开这行代码就能抓住第二个异常。
        try//测试抓0分母异常,都能抓住
        {
            hv_c = 0;
            hv_b = 2.0 / hv_c;
        }
        // catch (Exception) 
        catch (HException &except)
        {
            Herror heror = except.ErrorCode();
            if (except.ErrorCode() == 1302)
            {
                std::cout << heror << std::endl;
            }
        }
        try//测试halcon空数组异常,只能halcon自己抓的住。当然新版的halcon导出函数是TupleMax,就算不用halcon也能抓住,这里只是找一个c++抓不住的例子。
        {
            hv_a = HTuple();
            tuple_max(hv_a, &hv_Max);
        }
         //catch (Exception) 
        catch (HException &except)
        {
            Herror heror = except.ErrorCode();      
            std::cout << heror << std::endl;
        }
        system("pause");
    }
    int main(int argc, char *argv[])
    {
        action();
    }
    

    参考:https://blog.csdn.net/weixin_43913330/article/details/98927546
    halcon帮助 F1:Programmer‘s Guide 5.3,10.9

    相关文章

      网友评论

          本文标题:c++有时候抓不住halcon的异常的解决办法

          本文链接:https://www.haomeiwen.com/subject/likkrktx.html