0

特定のファイルタイプからデータを読み取るコンポーネントを作成しています。現在、filepath のプロパティがあります。無効なファイルが渡された場合やファイルが見つからなかった場合に、このブロックをできる限り終了させたいと考えています。

例外をスローすると、実行が停止しますが、テスト中に黒板からブロックが削除されます (?)。これにより、より「承認された」方法があると思います。

私の現在の解決策は次のようなものです:

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

ただし、無効な入力を処理する方法はこれだけではありません。これは、開発者の設計上の決定です。

チェーンの他の場所にある問題について下流の追加コンポーネントに知らせたい場合は、いくつかのオプションがあります。バルキオ ポートの実装で利用可能なエンド オブ ストリーム ビットを使用して、追加のデータがないことをダウン ストリーム コンポーネントに知らせることができます。その後、この情報を使用して、クリーンアップとシャットダウンを行うことができます。メッセージングを使用してイベント チャネルにメッセージを送信することもでき、このイベント チャネルを購読しているすべての人にメッセージを知らせることができます。繰り返しますが、これは設計上の決定です。

于 2013-11-18T15:06:19.563 に答える