[PowerShell V2 CTP3] try – catch – finally

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 などを使用して処理を細かく分けることも可能ですので、是非試してみてください。

コメント

  1. […] – 国の主要な都市を取得する [PowerShell V2 CTP3] try – catch – finally 連想配列を変換してユーザー定義オブジェクトを簡単に作成する […]

タイトルとURLをコピーしました