PowerShell: ◆ヘルプをメモ帳で表示する でCatchできないエラーがあることが分かった。
調べてみるとエラーには「終了するエラー」と「続行するエラー」があり、Catchできるのは「終了するエラー」だけのようだ。
(エラーの詳細は、about_errorsを参照しろとヘルプにあるが、このトピックは存在しなかった)
そこで、ErrorActionパラメータに「Stop」を指定してCatchできるようにする。
Function gh{ $path = Join-Path $env:temp PSHelp.txt |
ErrorActionの規定値はErrorActionPreference自動変数で管理されていて、この初期値がContinueになっている。
よって、この値をStopにして、個別に続行させたいコマンドに対してErrorActionでContinueを指定するのも良いかもしれない。
Function gh{ } |
また、trapステートメントを使って以下のような書き方もできる。
Function gh{ |
$error[0]の代わりに $_ を指定しても良い。
Function gh{ |
ちなみに、Trapステートメントはどこに書いても有効なようだ(同一スコープ内で)。
VBのOn Error Goto 0 (だっけ?)のように途中で無効にする方法は見つけられなかった。
まぁ、Try~Catch~Finally(Version2から)があるので問題ないだろう。
0 件のコメント:
コメントを投稿