2016-08-26 56 views
1

在PowerShell中,一定條件下,我這樣做:PowerShell的抓[System.Management.Automation.MethodException]錯誤

throw [System.Management.Automation.MethodException] 

後來我有趕上這樣的:

catch [System.Management.Automation.MethodException] 
{ 

catch 
{ 

我的代碼下降進入第二個(一般)捕獲。 當我看着$ _。第二個catch的異常,它說'System.Management.Automation.MethodException' - 那麼爲什麼Powershell在第一次catch中沒有捕獲它呢? 我該如何解決這個問題?

謝謝,彼得

+1

'扔[System.Management.Automation。 MethodException]' - >'throw [System.Management.Automation.MethodException] :: new()' – PetSerAl

回答

1

PetSerAl在評論中有它的權利;您需要創建MethodException類的實例

他的建議是好的,簡潔:

throw [System.Management.Automation.MethodException]::new() 

但它只能在PowerShell中5+。在早期版本:

$ex = New-Object -TypeName System.Management.Automation.MethodException 
throw $ex 

或者,在任何版本同時包括消息使用這種簡單的方法是蒙上[String]作爲例外:

throw [System.Management.Automation.MethodException]"You messed up."