エラーを処理する
- 更新日2025-08-27
- 6分で読める
非常に信頼性の高いVIでも、エラーが発生する場合があります。VIが正しく機能しないことが判明した場合、エラーをチェックするメカニズムが必要です。エラーをチェックするメカニズムを作成することで、VIで発生したエラーの原因と場所を特定することができます。
たとえば、入出力 (I/O) 処理はよくエラーが発生する箇所です。通常、I/O関数はエラー情報を返します。特にI/O処理 (ファイル、シリアル、計測器、データ収集、および通信) を行うVIでは、内部にエラーチェック機能を組み込み、エラーを効果的に処理するメカニズムを提供する必要があります。
自動エラー処理
デフォルトでは、VIの実行時にエラーが発生した場合、自動的に実行が中断し、エラーが発生したサブVIや関数がハイライトされ、エラーダイアログボックスが表示されます。
自動エラー処理を無効にする
エラー処理を他の方法で行うために、自動エラー処理を無効にすることもできます。たとえば、ブロックダイアグラム内のI/O VIがタイムアウトになっても、自動エラー処理がアプリケーション全体を停止して、エラーダイアログボックスを表示することを許可せずに、一定期間、再試行するように指定することもできます。カスタムエラー処理は、VIのブロックダイアグラムで実装できます。
さまざまなタイプのVIで自動エラー処理を無効にする方法については、以下の表を参照してください。
| VIのタイプ | 自動エラー処理を無効にする |
|---|---|
| 現在のVI | ファイル»VIプロパティを選択します。次に、カテゴリプルダウンメニューから実行を選択し、自動エラー処理を有効チェックボックスをオンにします。 |
| 新規のブランクVI | ツール»オプションを選択します。次に、カテゴリリストからブロックダイアグラムを選択し、新規VIで自動エラー処理を有効チェックボックスをオンにします。 |
| サブVIまたはVI内の関数 | サブVI内にエラー出力表示器を作成するか、そのサブVIのエラー出力パラメータを別のサブVIまたは関数のエラー入力に配線します。 |
その他のエラー処理方法
LabVIEWのエラー処理はデータフローモデルに従い、VI内をデータが流れるのに似ています。VIの処理フローの開始点から終了点までエラー情報を配線します。また、エラーが発生せずにVIが実行されたかを確認するため、エラー処理VIを、VIの最後に組み入れます。各VI内でエラー入力とエラー出力クラスタを使用して、エラー情報をVI内に通過させます。エラークラスタは、通常、同じ標準エラー入力と標準エラー出力の機能を提供します。エラークラスタはフロースルーパラメータです。
たとえば、下図は標準エラークラスタを使用したVIを示しています。
VIの実行時、LabVIEWは各実行ノードでエラーがないかをテストします。エラーが検出されなかった場合、ノードは正常に実行されます。エラーが検出された場合、コード部分は実行されずにノードは次のノードにエラーを渡します。次のノードでも同じことが行われ、さらに次のノードへと渡していきます。実行フローの最後にエラーが報告されます。
エラー入力とエラー出力クラスタの要素については、下表を参照してください。
| クラスタ要素名 | クラスタ要素の説明 |
|---|---|
| ステータス | エラーが発生した場合にTRUEを報告するブール値 |
| コード | 番号でエラーを識別する符号付き32 ビット整数。ステータスのFALSEを伴う0以外のエラーコードは、エラーでなく警告であることを示します。 |
| ソース | エラーが発生した場所を示す文字列 |
| メモ ブールデータを受け取る一部のVI、関数、ストラクチャは、エラークラスタも認識します。たとえば、「ブール」関数、または「選択」関数、「LabVIEWを終了」関数、「停止」関数のブール入力にエラークラスタを配線できます。 |
LabVIEWで、独自のエラー処理を開発および実装することができます。エラーを処理するには、ダイアログ&ユーザインタフェースパレットにあるLabVIEWエラー処理VIと関数、また多くのVIが持つエラー入力とエラー出力パラメータを使用します。たとえば、LabVIEWでエラーが発生した場合に、さまざまな種類のダイアログボックスにエラーメッセージを表示できます。
LabVIEW標準のVIと関数は、数値によるエラーコードを使用するか、エラークラスタを使用するかのいずれかの方法でエラーを返します。通常、関数は数値によるエラーコード、VIはエラー入力とエラー出力を含むエラークラスタを使用します。
エラーの特定と管理用にデバッグツールをエラー処理と組み合わせて使用することができます。
エラークラスタの一般的な使用方法の例については、下表を参照してください。
| 方法 | 説明 |
|---|---|
| エラークラスタを使用してループを停止する | ループの反復を停止するには、エラークラスタをWhileループの条件端子または条件端子付きのForループに配線します。エラークラスタを条件端子に配線する場合、エラークラスタのステータスパラメータのTRUEまたはFALSEの値のみが端子に渡されます。エラーが発生すると、ループは停止します。また、ショートカットメニューもTRUEの場合停止とTRUEの場合継続からエラーの場合停止とエラーの場合継続に変わります。条件端子付きのForループでは、値をカウント端子に配線するか、または入力配列を自動指標付けして、最大反復数を設定する必要もあります。Forループは、エラーが発生するまで、または設定した反復数が完了するまで実行されます。 |
| エラーステータスに応じて条件的にコードを実行する | エラークラスタをケースストラクチャのセレクタ端子に配線した場合、ケースセレクタラベルには、エラーとエラーなしの2つのケースが表示されます。エラーが発生すると、ケースストラクチャはエラーサブダイアグラムを実行します。エラー処理のケースストラクチャがあるVIを新規に作成するには、エラー処理のテンプレートVIがあるサブVIを使用します。ケースストラクチャの枠線の色も、エラーの場合は赤、エラーなしの場合は緑に変わります。 |