トッカンソフトウェア

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の値のままになります。



ページのトップへ戻る