PowerShellではTrap文を用いることで、例外処理を行うことができます。
trap文の構文は下記の通りです。
trap [<例外の種類>]{ trap文本体}
「例外の種類」は省略することが可能です。
たとえば下記は、1/$Null を実行すると、ゼロ除算例外が発生するため、trapへ制御が移り "例外発生" の文字列を表示します。
PS C:\Work> trap >> {"例外発生" } >> 1/$Null >> 例外発生 0 で除算しようとしました。 発生場所 行:3 文字:3 + 1/$ <<<< Null
実際にスクリプトで使用する例を見ていきたいと思います。
まずはtrapなしの下記をメモ帳などで入力し、trap1.ps1 として保存してください。
1/$Null Write-Host "スクリプト終了"
このスクリプトを実行すると下記のようにエラーメッセージが表示された後、「スクリプト終了」という文字が表示されます。
PS C:\Work> ./trap1.ps1 0 で除算しようとしました。 発生場所 C:\Work\trap1.ps1:1 文字:3 + 1/$ <<<< Null スクリプト終了
breakで処理を中断する
次に、例外を捕らえて処理を中断してみましょう。中断するにはbreakを使用します。(trap2.ps1)
trap { "例外が発生しました" break } 1/$Null Write-Host "スクリプト終了"
このスクリプトを実行すると下記のように、例外が発生するとTrapを実行するので「例外が発生しました」のメッセージとエラーメッセージを表示し、処理を中断します。
この結果、「スクリプト終了」の文字列は表示されません。
PS C:\Work> ./trap2.ps1 例外が発生しました 0 で除算しようとしました。 発生場所 C:\Work\trap.ps1:7 文字:3 + 1/$ <<<< Null
continueを使用する
次にtrapの中でcontinueを使用するとどうなるかみてみましょう。(trap3.ps1)
trap { "例外が発生しました" continue } 1/$Null Write-Host "スクリプト終了"
実行結果は下記の通りで、例外が発生すると「例外が発生しました」のメッセージが表示され、最後の「スクリプト終了」が表示されます。
PS C:\Work> ./trap3.ps1 例外が発生しました スクリプト終了
このようにcontinueを使用した場合はエラーメッセージは表示されず、trapを実行後、例外が発生した次の行から処理が再開されます。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail