.Netと同じ方法で例外処理にアプローチする必要がありますか?
次に、Powershellのcatchブロックから例外を再スローするにはどうすればよいですか?
「throw」はenounghですか、「throw $ _」の方が良いでしょうか?
PowerShellのthrow
キーワードの動作は.net実装とは異なります。netではSystem.Exceptions
自体またはその後継のみをスローできますが、PowerShellでは何でもスローでき、自動的にSystem.Management.Automation.RuntimeException
にラップされます。スニペット here を参照してください。
元の例外をre-throwしたい場合は、throw
(最も一般的)、throw $_
、またはthrow $_.Exception
を使用できます。
ps:catch
変数の内部$_
は、それ自体は例外ではなく、例外を含むSystem.Management.Automation.ErrorRecord