Powershell 例外処理
PowerShell 例外処理
例外処理には二種類。
- Trap [例外] {}
- Try{}Catch[例外]{}Finally{}
Trap
書式: Trap [例外] {例外処理}
Trap例外処理中の break,continue
- break: 処理を終了する。
- continue: 処理を継続する。
Try Catch
書式: Try{}Catch[例外]{}Finally{}
Throw
書式: Throw 文字列
どの例外をThrowするのか?
$Error
$Error[0]に最新のErrorそれ以降に過去のErrorが入っている。
$ErrorActionPreference
- Stop
- Continue
- SilentlyContinue
Trapのスコープ?
- 現スコープから外に向かってTrapが探索される
- break break文のスコープから抜け、外側のスコープのTrap処理を実行。
- continue そのスコープ内で次の処理を実行。
説明用の例
trap { continue } continue0 Func1 { trap { break } # break1 Func2 { trap { continue } # continue2 Func3 { trap { break } # break3 1/0 # exception3 $a = 3 # sentence3 } Func3 $a=2 # sentence2 } Func2 2/0 # exception1 $a=4 # sentence1 } Func1 $a=5 # sentence0
上記exception3により、break3 が処理され、sentence3を実行せずにFunc3を抜ける。その後、continue2が処理され、Func3の次のsentence2を実行する。
その後、exception1によりbreak1 -> (sentence1 skip) -> continue0 -> sentence0が実行される。