Перехват PowerShell [System.Management.Automation.MethodException] ошибка

В PowerShell при определенных условиях я делаю это:

throw [System.Management.Automation.MethodException]

позже я поймал вот так:

catch [System.Management.Automation.MethodException]
{

catch
{

Мой код попадает во второй (общий) улов. когда я смотрю на $_.Exception во втором улове, он говорит "System.Management.Automation.MethodException" - так почему же Powershell не улавливает его в первом улове? Как я могу это исправить?

Спасибо Питер

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."
Другие вопросы по тегам