Halcon算子翻译——catch

Posted 水行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Halcon算子翻译——catch相关的知识,希望对你有一定的参考价值。

名称

catch - 捕获在前面的try块中抛出的异常。

用法

catch( : : : Exception)

描述

  使用算子try,catch,endtry和throw可以在HDevelop中实现动态的异常处理,这相当于C ++和C#中的异常处理。 HDevelop中异常处理的基本概念在算子try,throw和dev_set_check以及“HDevelop用户指南”中进行了描述。

  算子catch在错误情况时结束一个监控的程序行块,并跳转至另一个程序行块。 如果try-catch块执行没有出现异常,则catch-endtry块将被忽略,程序将在相应的endtry算子后继续执行。 相反,在错误情况下,程序执行从发生错误的算子(或从throw算子)直接跳转到try-catch块附近的catch算子。 输出控制参数Exception返回一个元组,包含一组预定义的数据,用于描述发生算子错误时的错误。 如果throw运算符抛出异常,则可以返回任意的用户定义的元组。

  Exception元组中最重要的数据是错误代码。 因此,它作为Exception元组的第一项,可以通过‘Exception‘[0]直接访问。 但是,所有其他数据都必须通过算子dev_get_exception_data进行访问,因为提供的数据的顺序和范围在将来的版本中可能会更改,并且可能因不同的编程语言导出而有所不同。 尤其是,必须考虑到,在导出的代码中有一些错误元组的详情是不可用的,有些详情在请求之前可能无法确定(如错误消息)。

  如果由算子错误引发异常,HALCON错误代码<10000。如果从扩展库算子引发的异常,则会返回用户定义的错误代码(> 10000)作为错误代码。 所有HALCON错误代码的列表可以在‘Extension Package Programmer‘s Manual‘的附录中找到。 算子throw的用户定义的Exception元组的第一个元素应该是一个错误代码> = 30000,可以加入其他的元组元素,没有任何限制。

  如果在算子在HDevelop或HDevEngine中发生错误,Exception元组将提供以下关于错误的附加信息:

  HALCON错误消息。

附加的HDevelop特定错误代码,用于指定在HALCON算子(代码= 21000)内还是在算子外部(例如,在评估和分配参数表达式期间)捕获到错误。 在后一种情况下,错误代码更精确地指定了错误的类型。

一个确切的特定HDevelop错误消息。

发生错误的程序行号。

抛出异常的算子名称(如果在受保护的程序中抛出异常,则返回‘ - protected - ‘而不是算子名称)。

调用堆栈的深度(如果错误发生在“main”,则返回深度1)。

  在大多数情况下,对于自动异常处理,使用HALCON错误代码就足够了。 其他数据主要是为了向HDevelop程序的开发者提供一些关于错误情况的信息,以便于调试。 注意:在一般情况下,在导出的代码中有关错误位置的信息将不可用。

注意

算子try,catch,endtry和throw不支持C语言导出,支持语言C ++,C#和VisualBasic / .NET。 只有后者支持跨程序抛出异常。

参数

Exception (output_control)   exception-array → (integer / string)
返回异常数据的元组。

结果

catch总是返回2(H_MSG_TRUE)。

可能的后文

dev_get_exception_data

See also

try, endtry, throw, dev_get_exception_data, dev_set_check

模块

Foundation

HDevelop例程

try_catch.hdev           Demonstrate the usage of the exception handling in HDevelop
set_shape_model_timeout.hdev         Demonstrate how to use the timeout mechanism for shape-based matching
cancel_draw_result.hdev       Enable user-defined actions when a draw operation is canceled

以上是关于Halcon算子翻译——catch的主要内容,如果未能解决你的问题,请参考以下文章

Halcon算子翻译——exit

Halcon算子翻译——comment

halcon算子翻译——stop

Halcon算子翻译——endwhile

Halcon算子翻译——executable_expression

halcon算子翻译——return