PowerShellのVer.1.0では、エラーをトラップする方法として trap ステートメントがあります。(trapについては こちら を参照ください)
PowerShell V2では、新たに try – catch – finally を使用して構造化例外処理を行うことができます。(VB.NET や C#ユーザーにはお馴染みですね。 )
構造化例外処理とは、実行時に発生するエラーの検出やその処理を行うことです。
PowerShellにおける try – catch – finally の基本構文は
try
{
#エラーが発生する恐れのあるコードブロック
}
catch [キャッチする例外]
{
#エラーが発生した場合の処理を記述
}
finally
{
#最後に必ず実行する処理を記述
}
キャッチする例外は[]の中に記述します。
複数の例外を一度に処理する場合は、[]で括った例外をカンマで区切って指定します。
catch [キャッチする例外1],[キャッチする例外2]
{
#エラーが発生した場合の処理を記述
}
また例外は下記のように多段にすることも可能です。
catch [キャッチする例外1]
{
#エラーが発生した場合の処理を記述
}
catch [キャッチする例外2] {
#エラーが発生した場合の処理を記述
}
finallyは省略することも可能だということを覚えておいてください。
ファイル操作を使用した実例を下記に示します。
try
{
$path = "C:\Work\Test.txt"
$enc = [System.Text.Encoding]::GetEncoding("Shift_Jis")
$sr = New-Object IO.StreamReader($path, $enc]
}
catch [Exception]
{
#エラーが発生した場合の処理を記述
"エラーが発生しました"
}
finally
{
#最後に必ず実行する処理を記述
if ( $sr -ne $Null )
{
$sr.Close()
}
}
この例では例外をExceptionで一括して取得していますが、実際には FileNotFoundException などを使用して処理を細かく分けることも可能ですので、是非試してみてください。
コメント
[…] – 国の主要な都市を取得する [PowerShell V2 CTP3] try – catch – finally 連想配列を変換してユーザー定義オブジェクトを簡単に作成する […]