CLIのエラー処理方法
エラー処理コマンド
以下のコマンドと設定により、アプリケーションコマンドラインの処理中に発生する可能性のあるエラーを処理することができます。
コマンド名 | 必要なパラメータ | オプションのパラメータ | 説明 |
silent | crashReportPath |
| 警告ダイアログとクラッシュレポートのアップロードを抑制します。アップロードウィザードは表示されず、レポートは指定された場所に保存されます。 |
set | "key=value" |
| アプリケーションの状態変数を設定します。 |
writeProgress | fileName timeout |
| 定義された期間(秒単位のタイムアウト)の間に、進行状況の変更を指定されたファイル(パスを含むfileName)に書き込みます。サンプルのファイル構造は下記を参照してください。 |
設定名 | キー | 値 | デフォルト値 |
エラーで終了 | appQuitOnError | bool | false |
必要な再起動時に終了 | appQuitOnReset | bool | false |
最小処理時間 | appProcessActionTime | int | 15 |
アクション | appProcessAction | None | None |
PlaySound | |||
ExecuteProgram | |||
コマンドライン処理* | appProcessExecCmd | string |
|
サンプルと詳細情報
クラッシュ、エラー、警告ダイアログを非表示にする
RealityCapture.exe -silent c:\\CrashReportFolder ^
-set "appQuitOnError=true" ^
-set "appProcessActionTime=0" ^
-set "appProcessAction=ExecuteProgram" ^
-set "appProcessExecCmd=c:\\MyScripts\\ErrorWriter.bat $(processResult) $(processId) $(processDuration:d) c:\\ErrorReportFolder\\ErrorReport.txt"
パラメータ c:\ CrashReportFolderを指定した-silentコマンドは、クラッシュレポートのミニダンプをターゲットフォルダのCrashReportFolderにリダイレクトします。このコマンドにより警告ダイアログも非表示になります。
appQuitOnError をTrueに設定すると、エラーの発生時にアプリケーションが終了します。
0に設定したappProcessActionTimeは、継続時間が0秒以上のすべてのプロセスに留意する、つまり実際にはすべてのプロセスに留意するという意味になります。
2に設定したappProcessActionは、「プログラムを実行する」という意味です。
appProcessExecCmd は、そのフルパスの\MyScripts\ErrorWriter.bat と必要な入力パラメータの$(processResult) $(processId) $(processDuration:d) c:\ErrorReportFolder\ErrorReport.txtを使用して、特定のコマンド(バッチスクリプト)ErrorWriter.bat に設定されます。
これらの3つの設定は、プロセス期間が指定された最小時間(0秒)を超えると、アプリケーションがプログラムErrorWriter.batを実行するという方法で、まとめて解釈することができます。
実行されたプログラムの入力パラメータとして、アプリケーションからの値を使用できます。
例:
processResult - プロセスの結果を表す数値(processResultが0の場合、プロセスは正しく終了しています)
processId - プロセスのID
processDuration:d - プロセスを終了するのにかかった時間を示す数値
独自の入力パラメータ(c:\\ErrorReportFolder\\ErrorReport.txtなど)を使用して、名前や検出されたエラーのレポートが書き込まれるテキストファイルへのフルパスなど、必要なデータをスクリプトに送信することもできます。
これは、短いバッチスクリプトErrorWriter.batの簡単なサンプルです。
if /i "%1" NEQ "0" (
if /i "%1" NEQ "1" (
echo An error occured by process %2 which finished with result code %1 in %3 seconds. > %4
)
)
ここで、%1, %2, %3, %4は、入力パラメータの$(processResult)、$(processId)、$(processDuration:d)、c:\\ErrorReportFolder\\ErrorReport.txtです。このスクリプトにより、入力パラメータprocessResultの値がチェックされます。値が0でない場合、プロセスはエラーで終了し、スクリプトは出力ErrorReportテキストファイルに短いレポートを書き込みます。
An error occurred by process 20599 which finished with result code 2181038335 in 0 seconds.
再起動時に終了
変更後にアプリケーションの再起動が必要なアプリケーション設定がいくつかあります。このような場合は、appQuitOnResetキーをTrueに設定して-setコマンドを使用し、ダイアログを非表示にすることができます。このキーを使用してそれぞれの設定を変更すると、アプリケーションが終了しますので注意してください。以下は、キャッシュディレクトリをカスタムの場所に変更して新しいシーンを開く方法についてのサンプルです。
RealityCapture.exe -set "appQuitOnReset=true" ^
-set "appCacheLocation=Custom"
RealityCapture.exe -set "appQuitOnReset=true" ^
-set "appCacheCustomLocation=D:\cr-tmp"
RealityCapture.exe -newScene
進行状況のモニタリング
-writeProgressコマンドを使用すると、定義された期間(タイムアウト)の間に、指定されたファイル(fileName)に進行状況の情報を書き込むことができます。
作成されたファイルは、次の5つの列で構成されます。
algId – プロセスの ID
progress – プロセスの段階を示すこの間隔<0,1>からの番号
duration – 秒単位の経過時間
estimation – 秒単位の推定残り時間
eventType – {started, progress, timeout, completed}、特定の記録を生成したイベント
20561 0.00 0.04 404.08 #started
20561 0.45 0.10 0.22 #progress
20561 0.85 14.76 3.26 #progress
20561 0.90 15.04 1.70 #progress
20561 0.91 16.18 1.76 #progress
20561 0.94 16.72 1.82 #progress
20561 0.96 16.78 1.42 #progress
20561 0.97 17.06 0.55 #progress
20561 1.00 17.10 0.10 #progress
20561 1.00 17.13 0.00 #completed