31
我是否應該像.Net一樣處理異常處理?如何從Powershell中的catch塊中獲取異常?
那麼,如何從Powershell的catch塊中重新拋出一個異常呢?
'throw'is enoungh or'throw $ _'會更好嗎?在PowerShell中
我是否應該像.Net一樣處理異常處理?如何從Powershell中的catch塊中獲取異常?
那麼,如何從Powershell的catch塊中重新拋出一個異常呢?
'throw'is enoungh or'throw $ _'會更好嗎?在PowerShell中
throw
關鍵字的行爲不同,然後.NET實現:在.NET中你只能扔System.Exceptions
本身或其繼承人,但在PowerShell中,你可以扔東西,並且是自動纏繞成System.Management.Automation.RuntimeException
。請參閱片段here。
如果你喜歡再次引發原來的異常,你可以使用throw
(最常見),或throw $_
,或throw $_.Exception
PS:裏面catch
變量$_
本身不是例外,而是System.Management.Automation.ErrorRecord
包含異常
注意:在C#中,'throw'形式保留原始異常的上下文(源位置),但不幸的是,在PowerShell中看起來並不是這種情況。 – brianary