ja-JP/about_Try_Catch_Finally.help.txt
|
TOPIC about_Try_Catch_Finally 簡単な説明 終了エラー(terminating error)を捕捉して処理する try / catch / finally を説明します。(PSHelpJaJP 日本語パッチ版) 詳細な説明 try ブロック内で終了エラーが発生すると、PowerShell は対応する catch ブロックにエラーを渡して処理させます。finally ブロックは、エラーの有無に かかわらず最後に必ず実行され、後始末に使います。 構文 try { <エラーが発生し得るコード> } catch [<例外の型1>], [<例外の型2>] { <型1 または型2 のエラーを処理するコード> } catch { <上記以外のすべてのエラーを処理するコード> } finally { <エラーの有無に関係なく必ず実行するコード> } 例 try { $content = Get-Content "C:\no_such_file.txt" -ErrorAction Stop } catch [System.IO.FileNotFoundException] { "ファイルが見つかりません: $($_.Exception.Message)" } catch { "想定外のエラー: $($_.Exception.Message)" } finally { "後始末を実行しました" } エラー情報の参照 catch ブロック内では、自動変数 $_ (または $PSItem) で現在のエラー (ErrorRecord) を参照できます。 catch { $_.Exception.Message # エラーメッセージ $_.Exception.GetType().FullName # 例外の型名 $_.ScriptStackTrace # スタックトレース } 重要な注意(非終了エラーの扱い) try/catch が捕捉するのは「終了エラー」だけです。多くのコマンドレットの エラーは既定で「非終了エラー」であり、そのままでは catch されません。 確実に捕捉するには -ErrorAction Stop を付けて終了エラーに変換します。 Get-Item "Z:\x" -ErrorAction Stop # これで catch 可能 複数の catch を書く場合は、より具体的な例外型を先に記述してください (先に一致したものが使われます)。 関連項目 about_Throw about_Trap about_Automatic_Variables about_CommonParameters (-ErrorAction について) |