发送消息
UDx 可以通过报告错误并终止执行来处理问题,但在某些情况下,您可能希望发送警告并继续。例如,UDx 可能会忽略或使用意外输入的默认值,并报告它已经这样做了。C++ 和 Python 消息传递 API 支持报告不同严重性级别的消息。
Udx 对 ServerInterface
实例具有访问权限。此类具有以下按严重性顺序报告消息的方法:
-
reportError
(也会终止执行) -
reportWarning
-
reportNotice
-
reportInfo
每种方法都会生成包含以下组件的消息:
-
ID 代码:标识码,为任意整数。此代码不会与 Vertica 错误代码交互。
-
消息字符串:对问题的简要描述。
-
可选详细信息字符串:提供更多上下文信息。
-
可选提示字符串:提供其他指导。
如果重复的消息具有相同的代码和消息字符串,则即使详细信息和提示字符串不同,它们也会被压缩到一个报告中。
构造消息
UDx 通常应在进程调用期间立即报告错误。对于所有其他消息类型,请在处理期间记录信息并从 UDx 的 destroy
方法调用报告方法。如果在处理期间调用其他报告方法,则不会生成输出。
构造消息的过程特定于语言。
C++
每个 ServerInterface
报告方法均使用 ClientMessage
实参。ClientMessage
类具有以下用于设置代码和消息、详细信息及提示的方法:
-
makeMessage:
设置 ID 代码和消息字符串。 -
setDetail:
设置可选的详细信息字符串。 -
setHint:
设置可选的提示字符串。
这些方法调用可以链接起来以简化消息的创建和传递。
所有字符串都支持 printf
样式的实参和格式。
在以下示例中,函数在 processBlock
中记录问题并在 destroy
中报告它们:
Python
每个 ServerInterface
报告方法都包含以下位置实参和关键字实参:
-
idCode:整数 ID 代码,为位置实参。
-
message:消息文本,为位置实参。
-
hint:可选提示文本,为关键字实参。
-
detail:可选的详细信息文本,为关键字实参。
所有实参都支持 str.format()
和 f-string
格式。
在以下示例中,函数在 processBlock
中记录问题并在 destroy
中报告它们:
API
在调用 ServerInterface 报告方法之前,请使用 ClientMessage 类构造并填充消息。
ServerInterface API 会提供以下报告消息的方法:
ServerInterface API 会提供以下报告消息的方法: