💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 2 из 20
Какой контрольный тест лучше всего проверит правило, связанное с `x >= 0 || throw(DomainError(x, "nonnegative value required"))`?
Julia Julia · Выбрасывание исключений через throw Копировать
function positive_sqrt(x)
x >= 0 || throw(DomainError(x, "nonnegative value required"))
return sqrt(x)
end
@show positive_sqrt(4.0)
Проверить на отдельном примере, что файлы, блокировки и внешние дескрипторы освобождают в `do`-блоке или `finally`; ожидание сборщика мусора не задаёт надёжный момент закрытия ресурса.
Проверить на отдельном примере, что `throw` прерывает обычный поток и передаёт объект исключения; тип исключения должен помогать вызывающему коду отличать нарушение входа от отказа среды.
Проверить на отдельном примере, что `try`, `catch`, `else` и `finally` разделяют обработку ошибки, успешный путь и обязательную очистку; `finally` не должен затмевать исходное исключение.
Проверить на отдельном примере, что собственный тип ошибки обычно наследуется от `Exception` и хранит структурированные данные, чтобы обработчик не разбирал текст сообщения.
Проверить на отдельном примере, что для маршрутизации ошибок обычно хватает строкового сообщения, а собственный тип исключения меняет лишь способ его печати.
Вопрос 4 из 20
Какой результат приёмочного теста подтвердит корректность участка с `x >= 0 || throw(DomainError(x, "nonnegative value required"))`?
f(x)\uparrow e
Приёмка должна подтвердить, что собственный тип ошибки обычно наследуется от `Exception` и хранит структурированные данные, чтобы обработчик не разбирал текст сообщения.
Приёмка должна подтвердить, что файлы, блокировки и внешние дескрипторы освобождают в `do`-блоке или `finally`; ожидание сборщика мусора не задаёт надёжный момент закрытия ресурса.
Приёмка должна подтвердить, что `throw` прерывает обычный поток и передаёт объект исключения; тип исключения должен помогать вызывающему коду отличать нарушение входа от отказа среды.
Приёмка должна подтвердить, что `try`, `catch`, `else` и `finally` разделяют обработку ошибки, успешный путь и обязательную очистку; `finally` не должен затмевать исходное исключение.
Приёмка должна подтвердить, что для маршрутизации ошибок обычно хватает строкового сообщения, а собственный тип исключения меняет лишь способ его печати.
Вопрос 7 из 20
Что нужно подтвердить отдельным примером для `try`?
Julia Julia · Обработка и очистка try/catch/finally Копировать
function read_first(path)
io = open(path, "r")
try
return readline(io)
catch err
@error "read failed" exception=(err, catch_backtrace())
rethrow()
finally
close(io)
end
end
Проверить на отдельном примере, что `finally` выполняется лишь после перехваченного исключения и пропускается при обычном `return` из блока `try`.
Проверить на отдельном примере, что собственный тип ошибки обычно наследуется от `Exception` и хранит структурированные данные, чтобы обработчик не разбирал текст сообщения.
Проверить на отдельном примере, что файлы, блокировки и внешние дескрипторы освобождают в `do`-блоке или `finally`; ожидание сборщика мусора не задаёт надёжный момент закрытия ресурса.
Проверить на отдельном примере, что `throw` прерывает обычный поток и передаёт объект исключения; тип исключения должен помогать вызывающему коду отличать нарушение входа от отказа среды.
Проверить на отдельном примере, что `try`, `catch`, `else` и `finally` разделяют обработку ошибки, успешный путь и обязательную очистку; `finally` не должен затмевать исходное исключение.
Вопрос 9 из 20
Как проверить, что новая реализация `try` не изменила обещанное пользователю поведение?
\mathrm{finally}\;\forall\text{ путей выхода}
Приёмка должна подтвердить, что `finally` выполняется лишь после перехваченного исключения и пропускается при обычном `return` из блока `try`.
Приёмка должна подтвердить, что собственный тип ошибки обычно наследуется от `Exception` и хранит структурированные данные, чтобы обработчик не разбирал текст сообщения.
Приёмка должна подтвердить, что файлы, блокировки и внешние дескрипторы освобождают в `do`-блоке или `finally`; ожидание сборщика мусора не задаёт надёжный момент закрытия ресурса.
Приёмка должна подтвердить, что `try`, `catch`, `else` и `finally` разделяют обработку ошибки, успешный путь и обязательную очистку; `finally` не должен затмевать исходное исключение.
Приёмка должна подтвердить, что `throw` прерывает обычный поток и передаёт объект исключения; тип исключения должен помогать вызывающему коду отличать нарушение входа от отказа среды.
Вопрос 11 из 20
Какое утверждение точнее всего объясняет участок с `struct InvalidMeasurement <: Exception`?
e=(\mathrm{type},\mathrm{context})
Julia Julia · Собственные ошибки Копировать
struct InvalidMeasurement <: Exception
row::Int
value::Any
reason::String
end
Base.showerror(io::IO, e::InvalidMeasurement) =
print(io, "row $(e.row): $(e.reason), value=$(repr(e.value))")
`try`, `catch`, `else` и `finally` разделяют обработку ошибки, успешный путь и обязательную очистку; `finally` не должен затмевать исходное исключение.
Собственный тип ошибки обычно наследуется от `Exception` и хранит структурированные данные, чтобы обработчик не разбирал текст сообщения.
Текст собственного исключения удобнее структурированных полей, потому что обработчик может надёжно разобрать его регулярным выражением.
`throw` прерывает обычный поток и передаёт объект исключения; тип исключения должен помогать вызывающему коду отличать нарушение входа от отказа среды.
Файлы, блокировки и внешние дескрипторы освобождают в `do`-блоке или `finally`; ожидание сборщика мусора не задаёт надёжный момент закрытия ресурса.
Вопрос 12 из 20
Какую проверку стоит добавить для участка с `struct InvalidMeasurement <: Exception`?
Julia Julia · Собственные ошибки Копировать
struct InvalidMeasurement <: Exception
row::Int
value::Any
reason::String
end
Base.showerror(io::IO, e::InvalidMeasurement) =
print(io, "row $(e.row): $(e.reason), value=$(repr(e.value))")
Проверить на отдельном примере, что текст собственного исключения удобнее структурированных полей, потому что обработчик может надёжно разобрать его регулярным выражением.
Проверить на отдельном примере, что `try`, `catch`, `else` и `finally` разделяют обработку ошибки, успешный путь и обязательную очистку; `finally` не должен затмевать исходное исключение.
Проверить на отдельном примере, что файлы, блокировки и внешние дескрипторы освобождают в `do`-блоке или `finally`; ожидание сборщика мусора не задаёт надёжный момент закрытия ресурса.
Проверить на отдельном примере, что `throw` прерывает обычный поток и передаёт объект исключения; тип исключения должен помогать вызывающему коду отличать нарушение входа от отказа среды.
Проверить на отдельном примере, что собственный тип ошибки обычно наследуется от `Exception` и хранит структурированные данные, чтобы обработчик не разбирал текст сообщения.
Вопрос 14 из 20
Какой результат приёмочного теста подтвердит корректность участка с `struct InvalidMeasurement <: Exception`?
e=(\mathrm{type},\mathrm{context})
Приёмка должна подтвердить, что `try`, `catch`, `else` и `finally` разделяют обработку ошибки, успешный путь и обязательную очистку; `finally` не должен затмевать исходное исключение.
Приёмка должна подтвердить, что текст собственного исключения удобнее структурированных полей, потому что обработчик может надёжно разобрать его регулярным выражением.
Приёмка должна подтвердить, что `throw` прерывает обычный поток и передаёт объект исключения; тип исключения должен помогать вызывающему коду отличать нарушение входа от отказа среды.
Приёмка должна подтвердить, что собственный тип ошибки обычно наследуется от `Exception` и хранит структурированные данные, чтобы обработчик не разбирал текст сообщения.
Приёмка должна подтвердить, что файлы, блокировки и внешние дескрипторы освобождают в `do`-блоке или `finally`; ожидание сборщика мусора не задаёт надёжный момент закрытия ресурса.
Вопрос 17 из 20
Какой контрольный тест лучше всего проверит правило, связанное с `result = with_lock(ReentrantLock()) do`?
Julia Julia · Освобождение ресурсов Копировать
function with_lock(lock, f)
Base.lock(lock)
try
return f()
finally
Base.unlock(lock)
end
end
result = with_lock(ReentrantLock()) do
sum(1:10)
end
Проверить на отдельном примере, что `try`, `catch`, `else` и `finally` разделяют обработку ошибки, успешный путь и обязательную очистку; `finally` не должен затмевать исходное исключение.
Проверить на отдельном примере, что файлы, блокировки и внешние дескрипторы освобождают в `do`-блоке или `finally`; ожидание сборщика мусора не задаёт надёжный момент закрытия ресурса.
Проверить на отдельном примере, что собственный тип ошибки обычно наследуется от `Exception` и хранит структурированные данные, чтобы обработчик не разбирал текст сообщения.
Проверить на отдельном примере, что файл можно оставить открытым после функции: сборщик мусора закрывает его до следующей операции ввода-вывода.
Проверить на отдельном примере, что `throw` прерывает обычный поток и передаёт объект исключения; тип исключения должен помогать вызывающему коду отличать нарушение входа от отказа среды.
Вопрос 19 из 20
После обновления Julia или пакета поведение участка с `result = with_lock(ReentrantLock()) do` изменилось. Какой критерий приёмки остаётся корректным?
\mathrm{acquire}\Rightarrow\mathrm{release}
Приёмка должна подтвердить, что собственный тип ошибки обычно наследуется от `Exception` и хранит структурированные данные, чтобы обработчик не разбирал текст сообщения.
Приёмка должна подтвердить, что `throw` прерывает обычный поток и передаёт объект исключения; тип исключения должен помогать вызывающему коду отличать нарушение входа от отказа среды.
Приёмка должна подтвердить, что файлы, блокировки и внешние дескрипторы освобождают в `do`-блоке или `finally`; ожидание сборщика мусора не задаёт надёжный момент закрытия ресурса.
Приёмка должна подтвердить, что файл можно оставить открытым после функции: сборщик мусора закрывает его до следующей операции ввода-вывода.
Приёмка должна подтвердить, что `try`, `catch`, `else` и `finally` разделяют обработку ошибки, успешный путь и обязательную очистку; `finally` не должен затмевать исходное исключение.