Мы все выросли слухами о двух типах ошибок, которые имеет PowerShell: оканчивающиеся и не заканчивающиеся ошибки.Неясный третий тип ошибки
Что описывает ошибка, не связанная с завершением, так это то, что она просто выводит поток ошибок и позволяет сценарию продолжить выполнение. Однако он не может быть пойман попыткой/уловкой, так как никакое исключение на самом деле не «бросается».
Что касается конечной ошибки, то он выводит ошибку в поток ошибок и, если необработанный, полностью останавливает скрипт на своих дорожках, предотвращая что-либо ниже строки, в которой произошла ошибка при выполнении. Его можно поймать try/catch.
Однако, похоже, что существует ошибка третьего типа, о которой я не могу найти информацию или имя.
Это ошибка, которая представляет собой смесь между завершающей и безостановочной ошибкой ... При сгенерировании она не прерывает сценарий, предоставляя ему свойства ошибки, не связанные с завершением, но она может быть пойманным try/catch, что дает ему свойства завершающей ошибки!
И это самый простой тип ошибки, которая может быть. Это исключения, созданные непосредственно самими .NET, а не функциями или командлетами PowerShell.
Пара примеров:
- Деление на 0.
- Вызов метода объекта с неправильными аргументами - будь то неправильные типы параметров (что PowerShell не может автоматически принуждать), неверное число аргументов, и т. д. - пример:
'a'.Split([object[]])
Вопрос в том, что они называются и почему они отличаются от двух других типов? Объект по-прежнему является ErrorRecord, а не Exception, поэтому они должны действительно вести себя как завершающие или не заканчивающиеся ошибки, а не мутация обоих.
Воспитанная с Powershell? Нет, если вам всего десять лет :-) – paxdiablo
Это метафора для того, чтобы говорить все блоги и документацию как от MS, так и в противном случае вы обнаружите там только оконечные и неисчерпающие ошибки. – JohnUbuntu
Но почему я не могу быть 10? Возможно, мои детские рифмы были миланскими мирами и пузырями. Вы пробовали петь пузырь? Тяжелая работа! – JohnUbuntu