我正在编写一个从特定文件类型中读取数据的组件。目前,它有一个filepath的属性 - 我希望这个块在传递无效文件/找不到文件时尽可能地退出。
抛出异常会导致它停止执行,但是在我测试(?)时也会从黑板中删除该块,这让我觉得有更“批准”的方法来执行它。
我目前的解决方案如下:
LOG_ERROR( MyReader_i, "Unable to open file at " + Filepath );
return FINISH;
如果出现问题,是否还有另一种方法可以阻止,这有望阻止所有下游处理?
答案 0 :(得分:0)
您是否看过基本组件中的数据读取器组件?它还有一个文件路径作为输入。它在onConfigure调用期间处理此问题,如下所示:
def onconfigure_prop_InputFile(self, oldvalue, newvalue):
self.InputFile = newvalue
if not os.path.exists(self.InputFile):
self._log.error("InputFile path provided can not be accessed")
然后通过返回NOOP再次在服务功能中。
def process(self):
if (self.Play == False):
return NOOP
if not (os.path.exists(self.InputFile)):
return NOOP
然而,这不是处理无效输入的唯一方法。这是一个由开发人员决定的设计决策。
如果您想了解下游其他组件以了解链中其他地方的问题,您可以选择一些选项。您可以使用在bulkio端口实现中可用的End of Stream位向下游组件发送信号,表示没有其他数据。然后,他们可以使用此信息进行清理和关闭。您还可以使用消息传递将消息发送到事件通道,并且可以使订阅此事件通道的任何人知道该消息。再次,这是一个设计决定。