dev_get_exception_dataT_dev_get_exception_dataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data开发获取异常数据(算子)
名称
dev_get_exception_dataT_dev_get_exception_dataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data — 访问异常元组的元素。
签名
def dev_get_exception_data(exception: Sequence[Union[int, str]], name: MaybeSequence[str]) -> Sequence[Union[int, str]]
描述
算子 dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data 允许访问由 catchcatchCatchCatchCatchcatch 算子捕获的异常元组中的特定项。除了始终作为异常元组第一个元素传递的错误代码外,异常元组中的所有其他数据都必须仅通过 dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data 算子进行访问。这是因为未来版本中提供的数据顺序和范围可能会发生变化,且不同代码导出之间也可能存在差异。
如果在 HDevelop 或 HDevEngine 中发生了算子错误,捕获的异常元组将包含以下列出的数据项。该元组必须传递给 ExceptionExceptionExceptionExceptionexceptionexception 参数。请求的数据槽名称必须传递给
NameNameNameNamenamename 参数。请求的数据将返回在 ValueValueValueValuevaluevalue 参数中。通过将一个槽名称元组传递给 NameNameNameNamenamename,可以在单次调用
dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data 时请求多个异常数据项。此时,ValueValueValueValuevaluevalue 参数将返回相应的数据元组。对于不可用的请求项,将返回空字符串 (''"""""""""")。
请注意,算子 dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data 旨在在 HDevelop 或 HDevEngine 内部使用。当该算子被导出时,部分信息将不可用。
支持的数据槽:
- 'error_code'"error_code""error_code""error_code""error_code""error_code":
-
HALCON 错误代码或用户自定义错误代码。HALCON 错误代码列表(代码 < 10000)可在“扩展包程序员手册”的附录中找到。
- 'add_error_code'"add_error_code""add_error_code""add_error_code""add_error_code""add_error_code":
-
额外的 HDevelop 专用错误代码。这些错误代码用于指定错误是在 HALCON 算子内部(代码 = 21000)还是在算子外部(例如在参数表达式的求值和赋值过程中)被捕获的。在后一种情况下,错误代码会更精确地指定错误类型。相关错误代码列于“HDevelop 用户指南”中。
- 'error_message'"error_message""error_message""error_message""error_message""error_message":
-
HALCON 错误信息。
- 'add_error_message'"add_error_message""add_error_message""add_error_message""add_error_message""add_error_message":
-
描述 HDevelop 特定错误的更详细错误信息。
- 'program_line'"program_line""program_line""program_line""program_line""program_line":
-
发生错误的程序行号。
- 'operator'"operator""operator""operator""operator""operator":
-
抛出异常的算子名称(如果异常是在受保护的子程序中抛出的,则返回“--protected--”而非算子名称)。
- 'call_stack_depth'"call_stack_depth""call_stack_depth""call_stack_depth""call_stack_depth""call_stack_depth":
-
调用栈的深度(如果错误发生在“main”中,则返回深度为 1)。
- 'procedure'"procedure""procedure""procedure""procedure""procedure":
-
发生错误的函数名称。
- 'user_data'"user_data""user_data""user_data""user_data""user_data":
-
用户定义的异常元组。如果捕获了算子异常并重新抛出,则此元组即是在调用
throwthrowThrowThrowThrowthrow 时附加到捕获的异常元组上的元组。如果是完全由用户定义的异常,则返回除包含错误代码(>= 30000)的首个元素以外的所有元组项。如果异常元组中未传递用户数据,则返回空元组。请注意,在一次 dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data 调用中,不能同时请求用户数据元组和其他任何异常数据。
参数
ExceptionExceptionExceptionExceptionexceptionexception (输入控制) exception-array → HTupleSequence[Union[int, str]]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)
包含异常数据或用户定义错误代码的元组。
NameNameNameNamenamename (输入控制) attribute.name(-array) → HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)
所请求的异常数据的名称。
默认值:
'error_code'
"error_code"
"error_code"
"error_code"
"error_code"
"error_code"
值列表:
'add_error_code'"add_error_code""add_error_code""add_error_code""add_error_code""add_error_code", 'add_error_message'"add_error_message""add_error_message""add_error_message""add_error_message""add_error_message", 'call_stack_depth'"call_stack_depth""call_stack_depth""call_stack_depth""call_stack_depth""call_stack_depth", 'error_code'"error_code""error_code""error_code""error_code""error_code", 'error_message'"error_message""error_message""error_message""error_message""error_message", 'operator'"operator""operator""operator""operator""operator", 'procedure'"procedure""procedure""procedure""procedure""procedure", 'program_line'"program_line""program_line""program_line""program_line""program_line", 'user_data'"user_data""user_data""user_data""user_data""user_data"
ValueValueValueValuevaluevalue (输出控制) attribute.value-array → HTupleSequence[Union[int, str]]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)
所请求的异常数据。
结果
如果指定参数的值正确,dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data(作为算子)返回 2 (H_MSG_TRUE)。否则,将抛出一个异常并返回错误代码。
可能的前趋
catchcatchCatchCatchCatchcatch
另见
trytryTryTryTrytry,
catchcatchCatchCatchCatchcatch,
endtryendtryEndtryEndtryEndtryendtry,
throwthrowThrowThrowThrowthrow,
dev_set_checkdev_set_checkDevSetCheckDevSetCheckDevSetCheckdev_set_check
模块
基础