【9問目】博士の一問一答~エラー発生ノードを特定したい
2023.02.03
今回のお悩み
さてさて、今日はお悩みが届いておるのう。
どうやらエラーが起きたノードがフローのどこにあるのかを見つけたいようじゃ。
エラーのときってノードの枠が青くなったまま止まりますよね?
こんな感じで。
そうじゃな。
しかしエラー時の対処も考えて例外処理を入れていたら止まらんのう。
止まらないんじゃもうお手上げじゃないですか・・・。
ふぉっふぉっふぉ。これはのう・・・
ノードジャンプという技で一撃なのじゃよ!
ノ・・・ノードジャンプ!?
なんかカッコイイ!僕にも教えてください!
問
エラー発生ノードを特定したい
対処方法
ノードジャンプによる特定
例として、画像マッチングでエラーが発生した後、例外処理に遷移し止まることなく終了するシナリオを用意しました。
これを実行してシナリオが終了したらログを確認します。
下図の赤枠の列に注目してください。
タイムスタンプのすぐ右隣には必ずログの種別が出力されています。
エラーとなったノードを探す場合は、ここが「ERROR」となっている行を見つけましょう。
見つけました。
この行にマウスを合わせて、ダブルクリックします。
すると・・・
フローチャート表示エリアが自動的にエラーノードの位置まで移動し
指定のノードが太枠でフォーカスされます。
この技もしかして・・・変数の利用されてるノードを探すときにも
同じようなことやりましたよね?
うむ。これがノードジャンプじゃ。
(思ってたより地味だな・・・)
顔に出とるぞ。
ログを外部出力するシナリオの場合
シナリオによっては、エラー時にWinActorを停止した状態にしたくないといった理由から
ログを外部ファイルに出力しWinActorを終了するというような動きにされているものもあります。
この場合、ログ出力ウィンドウにログが残らないため、ノードジャンプはできません。
こういったときにはノード検索を利用してノードを特定します。
まずは外部出力されたログファイルを開き、先ほどのエラー行を拾います。
エラー行の内容は次の通りとなっていました。
この赤字にした部分「ノードID」があれば特定できます。
WinActorのログには、ノードが関係する行の末尾に必ずノードIDが記載されています。
これで今回エラーが発生したノードのIDは「38」ということがわかりました。
続いて、フローチャートツールバーの右端にあるノード検索エリアの入力欄に先ほどのIDを入力します。
これで検索してみると・・・
ノードジャンプと同様に、フローチャート表示エリアで対象のノードがフォーカスされました。
これでWinActor本体にログが残っていなくても、後からノードを見つけることができますね。
答
ログが残っていたらエラー行をダブルクリック!
そうでなければノードIDで検索じゃ!
検索ってIDそのまま入れてもいいんですね!
またひとつ賢くなりました。
これでエラーの修正が捗れば幸いじゃ。
関連記事こちらの記事も合わせてどうぞ。
2024.10.18
【26問目】博士の一問一答~特定の範囲だけテスト実行したい
2024.08.01
【25問目】博士の一問一答~新バージョンにアップデートしたい
2024.07.01