2012-12-11 23 views

回答

55

throw關鍵字的行爲不同,然後.NET實現:在.NET中你只能扔System.Exceptions本身或其繼承人,但在PowerShell中,你可以扔東西,並且是自動纏繞成System.Management.Automation.RuntimeException。請參閱片段here

如果你喜歡再次引發原來的異常,你可以使用throw(最常見),或throw $_,或throw $_.Exception

PS:裏面catch變量$_本身不是例外,而是System.Management.Automation.ErrorRecord包含異常

+17

注意:在C#中,'throw'形式保留原始異常的上下文(源位置),但不幸的是,在PowerShell中看起來並不是這種情況。 – brianary