← Back to Home

PowerShellのエラー処理

Views: 926

You can try the commands on our interactive shell.

PowerShellのエラー処理

PowerShellは、スクリプトがよりrobustかつ信頼性の高いものになるように、複数の方法でエラーと例外を処理します。この記事では、PowerShellでのエラー処理について探ります。

Try-Catch ブロック


エラー処理の一番一般的な方法は、try-catch ブロックです。これにより、エラーが発生する可能性のあるコードブロックを囲み、エラーが発生した場合にキャッチします。

例:

try {
    # エラーが発生する可能性があるコード
    $result = Get-Item "C:\nonexistent\path"
} catch [System.IO.FileNotFoundException] {
    Write-Host "ファイルが見つかりませんでした。"
} catch {
    Write-Host "エラーが発生しました: $($Error[0].Message)"
}

この例では、Get-Item コマンドレットを囲み、ファイルが見つからない場合にキャッチし、エラーメッセージを表示します。2番目の catch ブロックでは、他の種類のエラーが発生した場合にキャッチします。

Try-Catch-Finally ブロック


Try-catch-finally ブロックは、try-catch ブロックと似ていますが、finally ブロックがあります。これにより、エラーが発生してもかえって実行されます。

例:

try {
    # エラーが発生する可能性があるコード
    $result = Get-Item "C:\nonexistent\path"
} catch [System.IO.FileNotFoundException] {
    Write-Host "ファイルが見つかりませんでした。"
} catch {
    Write-Host "エラーが発生しました: $($Error[0].Message)"
} finally {
    Write-Host "Finally ブロックが実行されました"
}

この例では、finally ブロックは、エラーが発生してもかえって実行されます。このブロックを使用して、リソースの解放やクリーンアップ操作を行うことができます。

Throw ステートメント


Throw ステートメントは、explicitly throw するようにエラーをスクリプトに作成します。このステートメントを使用して、既にキャッチされた例外を再度throw することもできます。

例:

try {
    # エラーが発生する可能性があるコード
    $result = Get-Item "C:\nonexistent\path"
} catch {
    if ($Error[0].Exception.Message -like "*file not found*") {
        Write-Host "ファイルが見つかりませんでした。もう一度試します"
        # 例外を再度throw
        throw
    } else {
        Write-Host "エラーが発生しました: $($Error[0].Message)"
    }
}

この例では、try ブロックでファイルが見つからない場合にキャッチし、例外を再度throw し、外側の try-catch ブロックで捕捉します。

ErrorAction パラメーター


ErrorAction パラメーターは、コマンドレットに対してエラーが発生した場合の動作を指定します可能な値は次の通りです。

例:

Get-Item "C:\nonexistent\path" -ErrorAction Stop

この例では、ファイルが見つからない場合に PowerShell がスクリプトを停止し、エラーメッセージを表示します。

$Error 自動変数


$Error 自動変数は、スクリプトで最後に発生したエラーにアクセスすることができます。この変数を使用して、エラーをプログラム的にハンドリングすることができます。

例:

try {
    # エラーが発生する可能性があるコード
    $result = Get-Item "C:\nonexistent\path"
} catch {
    Write-Host "エラーが発生しました: $($Error[0].Message)"
}

この例では、$Error 変数を使用して、最後に発生したエラーのメッセージを表示します。

ベストプラクティス


PowerShell スクリプトでエラーをハンドリングする場合、ベストプラクティスとして以下のようなことを行うことが推奨されます。

これらのベストプラクティスを実行することで、PowerShell スクリプトがよりrobustかつ信頼性の高いものになることができます。

Try it Now!