PowerShellのTry-Catchの使い方!エラー処理方法もまとめ!

powershell

PowerShellのTry-Catchの意味や使い方を知りたいときはないでしょうか。

けど、そんな中で悩むことは、

・PowerShellのTry-Catchでエラー処理をする方法がわからない
・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の使い方
・PowerShellのTry-Catchのエラー処理方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です