PowerShell try catch
PowerShellで例外処理をやってみます。
try catch
test.ps1
$ErrorActionPreference = "Stop"
try {
echo "try"
throw "test"
}
catch {
echo "catch"
echo $_
exit 1
}
finally {
echo "finally"
}
echo "end"
exit 0
実行結果
try
catch
test
発生場所 C:\work\powershell\test.ps1:6 文字:2
+ throw "test"
+ ~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (test:String) [], RuntimeException
+ FullyQualifiedErrorId : test
finally
try の中で例外が発生した場合のみ、catch の中が実行されます。
finally は例外が発生してもしなくても実行されます。
$_ は例外の情報になります。
exit 数値が実行後の%ERRORLEVEL%の値になります。
(PowerShellでは$LastExitCode)
例外を発生させるには throw を使用します。
Get-Content で指定ファイルがない場合など、エラーになりますが、処理が継続されます。 これを継続させるのではなく例外発生させるには
$ErrorActionPreference = "Stop" を指定します。
終了コード
$LastExitCode
1
スクリプトを実行したときに最後にexitで指定した値がセットされます。
exitを実行しないで処理が終了した場合、$LastExitCodeは 更新されず、その前の$LastExitCodeの値のままになります。
ページのトップへ戻る