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