PowerShell2.0以降では、try...catch...finallyステートメントが使えます。
例1
基本的なtry...catch...finally処理try{ $a = 5 / 0 }catch{ Write-Host "エラーが発生しました。" }finally{ Write-Host "答えは" $a }
実行結果
エラーが発生しました。 答えはエラーが発生すると、catchブロックの処理が行われ、最後にfinallyブロックの処理が実行されます。
finallyブロックは、エラーの発生にかかわらず実行されます。
また、finallyブロックは省略できます。
例2
エラー内容を表示させるtry{ $a = 5 / 0 }catch{ Write-Host "エラーが発生しました。" Write-Host $_ }finally{ Write-Host "答えは" $a }
実行結果
エラーが発生しました。 0 で除算しようとしました。 答えはエラーが発生すると、エラーオブジェクトが自動変数$_に格納されます。
上の例では、catchブロックで$_を表示させています。
例3
特定の例外をキャッチするtry{ $a = 5 / 0 }catch [System.DivideByZeroException]{ Write-Host "値を 0 で除算しました。" Write-Host $_ }catch{ Write-Host "エラーが発生しました。" Write-Host $_ }finally{ Write-Host "答えは" $a }
実行結果
値を 0 で除算しました。 0 で除算しようとしました。 答えはcatchブロックで特定の例外を捕捉することが出来ます。
この例では、[System.DivideByZeroException]で0除算でスローされる例外をキャッチしています。
<参考サイト>
about_Try_Catch_Finally | Microsoft Technet
スポンサーリンク