使用右上角的选项卡切换到不同的编程语言。

使用右上角的选项卡切换到不同的编程语言。

使用右上角的选项卡切换到不同的编程语言。

使用右上角的选项卡切换到不同的编程语言。

dev_get_exception_dataT_dev_get_exception_dataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data开发获取异常数据(算子)

名称

dev_get_exception_dataT_dev_get_exception_dataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data — 访问异常元组的元素。

签名

dev_get_exception_data( : : Exception, Name : Value)

Herror T_dev_get_exception_data(const Htuple Exception, const Htuple Name, Htuple* Value)

void DevGetExceptionData(const HTuple& Exception, const HTuple& Name, HTuple* Value)

static void HOperatorSet.DevGetExceptionData(HTuple exception, HTuple name, out HTuple value)

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

模块

基础