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

Обработка ошибок

Проверяет основу темы «Обработка ошибок» через чтение кода, предсказание результата и выбор корректной конструкции. Вопросы требуют не только узнать конструкцию, но и проследить выполнение, найти причину дефекта, выбрать исправление и оценить пограничный сценарий. Языковые примеры рассчитаны на Swift 6; задания с Apple SDK рассматриваются в контексте современных платформенных контрактов.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 20 вопросов, на работу отведено 55 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 4 тематические шкалы и подробные объяснения.
Вопрос 1 из 20
Не запуская код, восстановите состояние значений после последней строки. Какой вывод верен для «Функции с throws»? Здесь оценивается распространение ошибки и выбор способа обработки.
SwiftФункции с throws · фрагмент для разбора
enum ParseError: Error { case invalid }
func parse(_ text: String) throws -> Int {
    guard let value = Int(text) else { throw ParseError.invalid }
    return value
}
print(try parse("12"))
Вопрос 2 из 20
Где окажется состояние программы после выполнения всех показанных операций? Важно учесть: сопоставление ошибок и полнота обработки.
SwiftОбработка через do-catch · фрагмент для разбора
enum E: Error { case network, decode }
func run() throws { throw E.decode }
do {
    try run()
} catch E.network {
    print("network")
} catch {
    print("other")
}
Вопрос 3 из 20
Какой из пяти выводов подтверждается построчной трассировкой? Не упускайте из виду следующее: преобразование success и сохранение failure.
SwiftТип Result · фрагмент для разбора
let result: Result<Int, Error> = .success(4)
let doubled = result.map { $0 * 2 }
print(try doubled.get())
Вопрос 4 из 20
Где окажется состояние программы после выполнения всех показанных операций? Важно учесть: обратный порядок и момент вычисления возвращаемого значения.
SwiftОтложенные действия defer · фрагмент для разбора
func demo() {
    defer { print("first") }
    defer { print("second") }
    print("body")
}
demo()
Вопрос 5 из 20
Что именно делает этот фрагмент неверным или неочевидным с точки зрения «Функции с throws»? Здесь оценивается распространение ошибки и выбор способа обработки.
SwiftФункции с throws · фрагмент для разбора
func load() throws -> Int { 1 }
func wrapper() -> Int {
    try load()
}
Вопрос 6 из 20
Что именно делает этот фрагмент неверным или неочевидным с точки зрения «Обработка через do-catch»? Не упускайте из виду следующее: сопоставление ошибок и полнота обработки.
SwiftОбработка через do-catch · фрагмент для разбора
enum E2: Error { case a, b }
func f() throws { throw E2.b }

func testCatch() {
    do {
        try f()
    } catch E2.a {
        print("a")
    }
}
Вопрос 7 из 20
Что именно делает этот фрагмент неверным или неочевидным с точки зрения «Тип Result»? Сосредоточьтесь на следующем: преобразование success и сохранение failure.
SwiftТип Result · фрагмент для разбора
enum E3: Error { case bad }
let value: Result<Int, E3> = .failure(.bad)
let next = value.map { String($0) }
print(next)
Вопрос 8 из 20
Какой диагноз согласуется и с исходным кодом, и с правилами Swift? Сосредоточьтесь на следующем: обратный порядок и момент вычисления возвращаемого значения.
SwiftОтложенные действия defer · фрагмент для разбора
func value(_ ok: Bool) -> Int {
    var x = 1
    defer { x += 10 }
    if ok { return x }
    return x * 2
}
print(value(true), value(false))
Вопрос 9 из 20
Какой вариант ремонта вы бы приняли после содержательной проверки кода? Важно учесть: распространение ошибки и выбор способа обработки.
SwiftФункции с throws · фрагмент для разбора
func load() throws -> Int { 1 }
func wrapper() -> Int {
    try load()
}
Вопрос 10 из 20
Выберите правку, после которой дефект исчезает не только в удачном примере. Проверяется сопоставление ошибок и полнота обработки.
SwiftОбработка через do-catch · фрагмент для разбора
enum E2: Error { case a, b }
func f() throws { throw E2.b }

func testCatch() {
    do {
        try f()
    } catch E2.a {
        print("a")
    }
}
Вопрос 11 из 20
Как восстановить заявленный контракт с наименьшим числом новых скрытых предположений? Сосредоточьтесь на следующем: преобразование success и сохранение failure.
SwiftТип Result · фрагмент для разбора
enum E3: Error { case bad }
let value: Result<Int, E3> = .failure(.bad)
let next = value.map { String($0) }
print(next)
Вопрос 12 из 20
Какое решение одновременно исправляет код и оставляет понятную границу для дальнейших изменений? Сосредоточьтесь на следующем: обратный порядок и момент вычисления возвращаемого значения.
SwiftОтложенные действия defer · фрагмент для разбора
func value(_ ok: Bool) -> Int {
    var x = 1
    defer { x += 10 }
    if ok { return x }
    return x * 2
}
print(value(true), value(false))
Вопрос 13 из 20
Что нужно учесть, прежде чем объявлять найденное правило универсальным? Важно учесть: распространение ошибки и выбор способа обработки.
Вопрос 14 из 20
На какой границе входов, владения или времени жизни результат может стать другим? Здесь оценивается сопоставление ошибок и полнота обработки.
Вопрос 15 из 20
Какое ограничение темы «Тип Result» обязательно проверить отдельным граничным тестом? Сосредоточьтесь на следующем: преобразование success и сохранение failure.
Вопрос 16 из 20
Какое условие отличает надёжное обобщение от случайно удачного запуска? Не упускайте из виду следующее: обратный порядок и момент вычисления возвращаемого значения.
Вопрос 17 из 20
Как организовать этот механизм, чтобы владение и отказ оставались понятными после расширения проекта? Важно учесть: распространение ошибки и выбор способа обработки.
Вопрос 18 из 20
Какой подход делает неправильное использование заметным раньше? Здесь оценивается сопоставление ошибок и полнота обработки.
Вопрос 19 из 20
Какой принцип важнее локальной красоты синтаксиса в рабочем приложении? Проверяется преобразование success и сохранение failure.
Вопрос 20 из 20
Какой инженерный принцип лучше всего подходит для долгосрочного сопровождения части «Отложенные действия defer»? Сосредоточьтесь на следующем: обратный порядок и момент вычисления возвращаемого значения.

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

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

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

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