PS PowerShell  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Ошибки и исключения

Ошибки и исключения: практический тест по PowerShell с чтением кода, поиском причины ошибки и выбором надёжного решения. Темы: Управление ошибками через ErrorAction, Блоки try, catch и finally, Коллекция ошибок $Error, Завершающие ошибки. Базовая линия — PowerShell 7.6.3; Windows-зависимые команды и отличия Windows PowerShell 5.1 отмечены в условиях.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант; близкие ответы различаются механизмом, порядком выполнения, областью действия или эксплуатационной границей. После завершения вы увидите общий результат, результаты по 4 тематическим шкалам и подробные объяснения.
Вопрос 1 из 20
Get-Item выдаёт незавершающую ошибку внутри try. Какое скрытое допущение делает решение ненадёжным?
PowerShellGet-Item выдаёт незавершающую ошибку внутри try
$result = & { try { Get-Item .\missing -ErrorAction Stop } catch { "caught" } }
$resultType = if($null -eq $result){'<null>'}else{$result.GetType().FullName}
[pscustomobject]@{ Result=$result; Type=$resultType; Count=@($result).Count }
Вопрос 2 из 20
-ErrorAction SilentlyContinue используется вместе с -ErrorVariable. Какой вывод был бы слишком сильным?
PowerShell-ErrorAction SilentlyContinue используется вместе с -ErrorVariable
$e=$null
Get-Item .\missing -ErrorAction SilentlyContinue -ErrorVariable e
$e.Count
Вопрос 3 из 20
$ErrorActionPreference временно меняется в функции. Какое скрытое допущение делает решение ненадёжным?
PowerShell$ErrorActionPreference временно меняется в функции
& { $old=$ErrorActionPreference; try{$ErrorActionPreference="Stop"} finally{$ErrorActionPreference=$old} }
Вопрос 4 из 20
Команда внешней программы завершилась с ненулевым кодом. Какой подход выдержит повторный запуск?
Вопрос 5 из 20
Сценарий подавляет все ошибки Continue/SilentlyContinue. Какой принцип PowerShell здесь работает?
Вопрос 6 из 20
catch фильтрует конкретный тип исключения до общего catch. Как исправить причину, а не только симптом?
PowerShellcatch фильтрует конкретный тип исключения до общего catch
try { [IO.File]::ReadAllText("missing.txt") } catch [IO.FileNotFoundException] { "not found" } catch { "other" }
Вопрос 7 из 20
В catch используется $_. Какое объяснение не зависит от случайностей окружения?
PowerShellВ catch используется $_
$result = & { try { throw [InvalidOperationException]"bad state" } catch { $_.Exception.GetType().Name } }
$items = @($result)
[pscustomobject]@{ Count=$items.Count; First=$items | Select-Object -First 1; IsNull=($null -eq $result) }
Вопрос 8 из 20
finally содержит освобождение ресурса. Какая граница важна для автоматизации?
PowerShellfinally содержит освобождение ресурса
$s=$null
try{$s=[IO.MemoryStream]::new(); throw "x"}finally{if($s){$s.Dispose()}}
Вопрос 9 из 20
catch записывает сообщение и продолжает без возврата статуса. Какой вариант точнее выражает контракт?
Вопрос 10 из 20
Весь большой сценарий обёрнут одним try/catch. На каком правиле основан результат?
Вопрос 11 из 20
Новая ошибка появляется в начале $Error. Какое ограничение здесь нельзя упустить?
PowerShellНовая ошибка появляется в начале $Error
$Error.Clear()
Get-Item .\missing -ErrorAction SilentlyContinue
$Error[0].FullyQualifiedErrorId
Вопрос 12 из 20
$Error.Clear() вызывается перед диагностикой. Какое ограничение здесь нельзя упустить?
PowerShell$Error.Clear() вызывается перед диагностикой
$before=$Error.Count
$valueType = if($null -eq $before){'<null>'}else{$before.GetType().FullName}
[pscustomobject]@{ Value=$before; Type=$valueType; Count=@($before).Count }
Вопрос 13 из 20
ErrorRecord преобразуется в строку. Какой принцип PowerShell здесь работает?
Вопрос 14 из 20
Сценарий определяет успех по тому, что $Error.Count не вырос. Какой вывод был бы слишком сильным?
Вопрос 15 из 20
$Error передаётся в телеметрию целиком. Какая граница важна для автоматизации?
Вопрос 16 из 20
throw создаёт завершающую ошибку. Что остаётся непроверенным после успешного запуска?
PowerShellthrow создаёт завершающую ошибку
$result = & { try { throw "boom" } catch { "seen"; throw } }
$summary = [ordered]@{ IsNull=($null -eq $result); Count=@($result).Count }
if($null -ne $result){$summary.Type=$result.GetType().FullName};[pscustomobject]$summary
Вопрос 17 из 20
Write-Error -ErrorAction Stop сравнивается с throw. Какой механизм срабатывает именно здесь?
PowerShellWrite-Error -ErrorAction Stop сравнивается с throw
$result = & { try { Write-Error "bad" -ErrorAction Stop } catch { $_.FullyQualifiedErrorId } }
$shape = if($null -eq $result){'<null>'}elseif($result -is [array]){'array'}else{$result.GetType().Name}
[pscustomobject]@{ Shape=$shape; Values=@($result) }
Вопрос 18 из 20
$PSCmdlet.ThrowTerminatingError вызывается в расширенной функции. Какое утверждение верно для этого случая?
Вопрос 19 из 20
Незавершающая ошибка возникла в begin/process/end. Какой вывод был бы слишком сильным?
Вопрос 20 из 20
Завершающая ошибка перехвачена слишком высоко и заменена общим текстом. Как исправить причину, а не только симптом?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу