0

我正在编写一个从特定文件类型读取数据的组件。目前,它有一个文件路径属性——我希望这个块在传递无效文件/找不到文件时尽可能地退出。

抛出异常会导致它停止执行,但也会在我测试时从黑板上删除块(?),这让我认为有一种更“认可”的方式来做到这一点。

我目前的解决方案是这样的:

LOG_ERROR( MyReader_i, "Unable to open file at " + Filepath );
return FINISH;

如果出现问题,是否有另一种方法可以停止,希望也能停止所有下游处理?

4

1 回答 1

0

你看过基础组件中的Data Reader组件吗?它还有一个文件路径作为输入。它在 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 位向下游组件发出信号,表明没有其他数据。然后,他们可以使用此信息进行清理和关闭。您还可以使用消息传递将消息发送到事件通道,并且订阅此事件通道的任何人都可以知道该消息。同样,这是一个设计决策。

于 2013-11-18T15:06:19.563 回答