💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант. После завершения откроются общий результат, оценки по 5 тематическим шкалам и подробный разбор.
Вопрос 1 из 25
Что в этом примере с `$dbh`, `$dsn` и `$user` происходит на самом деле?
Perl Подключение Копировать
my $dbh = DBI->connect($dsn,$user,$pass,{RaiseError=>1,PrintError=>0,AutoCommit=>1});
Подключение выбрасывает исключения на ошибках, не дублирует их в stderr и начинает в режиме автокоммита.
Для результата здесь достаточно учесть лишь такое условие: InactiveDestroy важен после fork, чтобы дочерний процесс не закрывал соединение родителя; это не обычная настройка каждого подключения.
Подключение выбрасывает исключения на ошибках, не дублирует их в stderr, но не начинает в режиме автокоммита.
Даже без правки фрагмент уже даёт гарантию исправленного варианта: Политика ошибок задана явно, а секреты не включаются в сообщение.
Этот код приведёт к иному эффекту: Код не проверяет результат connect и использует драйверные значения настроек по умолчанию, поэтому ошибка может проявиться далеко от причины.
Вопрос 6 из 25
Какую границу автор фрагмента «Подключение» не учёл?
Perl Подключение Копировать
my $dbh = DBI->connect($dsn,$user,$pass);
$dbh->do('UPDATE t SET x=1');
Дефект объясняется базовым поведением фрагмента: Подключение выбрасывает исключения на ошибках, не дублирует их в stderr и начинает в режиме автокоммита.
Нежелательное поведение вводит предлагаемое решение: Политика ошибок задана явно, а секреты не включаются в сообщение.
Код не проверяет результат connect и использует драйверные значения настроек по умолчанию, поэтому ошибка может проявиться далеко от причины. Дефект противоречит рабочему принципу темы «Подключение»: параметры DBI RaiseError, PrintError и AutoCommit задают осознанно для всего слоя доступа к данным.
Код не проверяет результат connect и использует драйверные значения настроек по умолчанию, поэтому ошибка не может проявиться далеко от причины. Дефект противоречит рабочему принципу темы «Подключение»: параметры DBI RaiseError, PrintError и AutoCommit задают осознанно для всего слоя доступа к данным.
Код проверяет результат connect и использует драйверные значения настроек по умолчанию, поэтому ошибка может проявиться далеко от причины. Дефект противоречит рабочему принципу темы «Подключение»: параметры DBI RaiseError, PrintError и AutoCommit задают осознанно для всего слоя доступа к данным.
Вопрос 9 из 25
Какой диагноз точнее всего относится к участку с `$row`, `$sth` и `handle_row`?
Perl Обработка ошибок Копировать
while (my $row = $sth->fetchrow_hashref) {
handle_row($row);
}
Undef означает и конец данных, и возможную ошибку fetch, если RaiseError включён.
Undef означает и конец данных, и возможную успех fetch, если RaiseError выключен.
Undef не означает и конец данных, и возможную ошибку fetch, если RaiseError выключен.
Defined означает и конец данных, и возможную ошибку fetch, если RaiseError выключен.
Undef означает и конец данных, и возможную ошибку fetch, если RaiseError выключен.