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