Вы можете установить обработчик trap
в b.ps1
для обработки ошибок в c.ps1
, если вы поставите точку на источнике b.ps1
, чтобы он работал в той же области, что и a.ps1
Например:
. .\b.ps1
Обновление: Действительно, это не работает. Кажется, что PowerShell не соблюдает идею запуска в области a.ps1 с помощью точечного поиска. Не уверен, что вы сможете сделать что-то лучше, чем это:
a.ps1 contents:
---------------
. .\b.ps1
trap {
TrapHandler $_
continue
}
.\c.ps1
b.ps1 contents:
---------------
function TrapHandler($error)
{
Write-Host "oops - $error"
}
Похоже, что обработчик ловушек должен быть в a.ps1, но вы можете определить функцию обработки ловушек в b.ps1. Тем не менее, не думайте, что вы можете контролировать расположение (прервать или продолжить) ошибки в этой функции.