Перехват 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."