名称
dev_get_exception_data - 访问exception元组的元素。
用法
dev_get_exception_data( : : Exception, Name : Value)
描述
算子dev_get_exception_data允许访问由算子catch捕获的exception元组的特定项目。 除了从来都是作为exception元组的第一个元素传递的错误代码外,exception元组的所有其他数据都必须通过算子dev_get_exception_data专门访问。 这是因为提供的数据的顺序和范围在将来的版本中可能会改变,并且可能会因不同的导出代码类型而有所不同。
如果一个算子在HDevelop或HDevEngine中发生错误,则捕获的exception元组包含下面列出的数据项。 这个元组必须传递给参数Exception。 请求的数据位置(slot)的名称必须传递给参数Name。 请求的数据在参数Value中返回。 通过将slot名称的元组传递给Name,可以在dev_get_exception_data的单个调用中请求多个异常数据项。 在这种情况下,相应的数据元组被返回到Value中。 对于不可用的请求项目,算子返回空字符串('')。
支持的data slots:
'error_code':
HALCON或用户定义的错误代码。 HALCON错误代码列表(代码<10000)可以在“Extension Package Programmer's Manua”的附录中找到。
'error_message':
HALCON错误信息。
'add_error_code':
附加的HDevelop特定的错误代码。 这些错误代码指定在HALCON算子(代码= 21000)内还是在算子外部(例如在判断和分配参数表达式期间)是否捕获到错误。 在后一种情况下,错误代码更精确地指定错误类型。 相关的错误代码列在“HDevelop User's Guide”中。
'add_error_message':
更精确地描述HDevelop特定错误的附加错误消息。
'program_line':
程序发生错误行的编号。
'operator':
抛出异常的算子的名称(如果异常在受保护的程序中抛出,则返回“ - protected - ”而不是算子名称)。
'call_stack_depth':
调用堆栈的深度(如果‘main’发生错误则返回深度1)。
'procedure':
发生错误的程序的名称。
'user_data':
用户定义的exception元组。 如果算子异常被捕获并重新抛出,则这是在throw调用中被追加到捕获的异常元组中的元组。 如果是完全由用户定义的异常,则返回除包含错误代码(> = 30000)的第一个元素之外的所有元组项。 如果没有通过异常元组传递用户数据,则返回一个空元组。 请注意,在同一个dev_get_exception_data调用中,用户数据元组(user data tuple)不能和任何其他异常数据一起请求。
参数
Exception (input_control) exception-array → (integer / string)
包含exception数据或用户定义的错误代码的元组。
Name (input_control) attribute.name(-array) → (string)
请求的exception数据的名称。
Default value: 'error_code'
List of values: 'add_error_code', 'add_error_message', 'call_stack_depth', 'error_code', 'error_message', 'operator', 'procedure', 'program_line', 'user_data'
Value (output_control) attribute.value-array → (integer / string)
请求的exception数据。
结果
如果指定参数的值正确,则dev_get_exception_data(作为算子)返回2(H_MSG_TRUE)。 否则会引发异常并返回错误代码。
Possible Predecessors
catch
See also
try, catch, endtry, throw, dev_set_check
模块
Foundation
HDevelop例程
try_catch.hdev Demonstrate the usage of the exception handling in HDevelop
set_shape_model_timeout.hd Demonstrate how to use the timeout mechanism for shape-based matching