PowerShellのTry-Catchの意味や使い方を知りたいときはないでしょうか。
けど、そんな中で悩むことは、
・PowerShellのTry-Catchの使い方がわからない
ですよね。
今回はそんなお悩みを解決する
・PowerShellのTry-Catchのエラー処理方法
についてまとめます!
もくじ
PowerShellのTry-Catchの構文は?
Try-Catchは、PowerShellにおけるエラー処理の構文で、予期しないエラーが発生した場合に例外
(Exception)をキャッチし、適切に処理することができます。
以下はTry-Catchの基本的な構文です。
try {
# ここに処理を記述します
}
catch {
# 例外が発生した場合の処理を記述します
}
tryブロック内には、実行したいコマンドや処理を記述します。
そしてtryの中で例外エラーを検知したいコマンドレットに「-ErrorAction Stop」を付与します。
catchブロック内には、例外が発生した場合の処理を記述します。
catchブロックは省略可能ですが、catchブロックの処理がない場合は例外が表示されます。
この例では、存在しないパスにアクセスしようとしているため、Get-ChildItemコマンドから例外がスローされ、ErrorAction Stopにより中断されます。
catchブロックでこの例外をキャッチし、Write-Errorコマンドを使用してエラーメッセージを表示します。
PowerShellのTry-Catchの使い方とサンプルコード
PowerShellのTry-CatchのTryブロックには、エラーを引き起こす可能性があるコードが含み、
Catchブロックは、このエラーを処理するコードを含むようにします。
以下のコードは、存在しないファイルを開こうとした場合に発生するエラーを処理します。
try {
Get-ChildItem -Path "C:UnknownFolder" -ErrorAction Stop
}
catch {
Write-Error "エラーが発生しました。:$($_.Exception.Message)"
}
次にfinallyブロックを設けるとTryブロックの正常異常を問わず強制的に処理ができるようになります。
try {
$file = Get-Content "C:\Users\user\OneDrive\temp.txt" -ErrorAction Stop
}
catch {
Write-Host "エラーが発生しました:$($_.Exception.Message)"
}
finally {
Write-Host $file
Write-Host "プログラムの実行が完了しました。"
}
Catchブロックに引数を指定しエラーハンドリングする
PowerShellのTry-Catch構文のCatchブロックに引数を指定すると予期しないエラーが発生しても、柔軟にエラーハンドリングすることができます。
ItemNotFoundExceptionの例外をキャッチ
catchブロックで、ItemNotFoundExceptionの例外をキャッチしています。ファイルが見つからな場合の判定で利用します。
try {
# 例外が発生する可能性があるコード
$result = Get-Item -Path 'C:\Windows\notexist.txt' -ErrorAction Stop
}
catch [System.Management.Automation.ItemNotFoundException] {
# ItemNotFoundExceptionの例外をキャッチした場合の処理
Write-Host "ファイルが見つかりませんでした。"
}
ArgumentExceptionの例外をキャッチ
catchブロックで、ArgumentExceptionの例外をキャッチしています。引数が無効の場合の判定で利用します。
try {
# 例外が発生する可能性があるコード
$result = Get-Item -Path 'C:\Windows\notexist.txt' -ErrorAction Stop
}
catch [System.ArgumentException] {
# ArgumentExceptionの例外をキャッチした場合の処理
Write-Host "引数が無効です。"
}
どの例外でもキャッチ
catchブロックで引数指定がない場合は、どの例外でもキャッチできる一般的なcatchブロック判定となります。
try {
# 例外が発生する可能性があるコード
$result = Get-Item -Path 'C:\Windows\notexist.txt' -ErrorAction Stop
}
catch {
# その他の例外をキャッチした場合の処理
Write-Host "エラーが発生しました。"
}
さいごに
いかがでしょうか。
今回は、
・PowerShellのTry-Catchのエラー処理方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す