У меня проблема с PowerShell, когда он не будет перехватывать исключение, даже если исключение явно указано в команде catch.
В этом случае я пытаюсь определить, является ли ProcessIDвсе еще работает, и если нет, то он предпримет некоторые действия.
Пример блока кода, с которым я борюсь:
try {
Get-Process -Id 123123 -ErrorAction 'Stop'
}
catch [Microsoft.PowerShell.Commands.ProcessCommandException] {
"Caught by Exception Type: Process is missing"
}
catch {
if ($_.Exception.getType().FullName -eq "Microsoft.PowerShell.Commands.ProcessCommandException") {
"Caught by Catch All: Process is missing"
}
}
Когда этот блок кода выполняется, вывод:
Caught by Catch All: Process is missing
Можно ожидать, что первое условие перехвата сработает, поскольку оно называет исключение, которое генерируется правильно, но не сработает.
Что еще хуже, когда запускается вторая команда перехвата(который что-то ловит) он запрашивает имя типа исключения и проверяет, является ли он «Microsoft.PowerShell.Commands.ProcessCommandException» (что это такое), а затем предпринимает соответствующие шаги.
Я знаю, что могу обойтиэто, но я чувствую, что мне не хватает фундаментального подхода к тому, как PowerShell обрабатывает исключения.
Кто-нибудь может пролить свет на это для меня?