DP Delphi / Pascal  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Исключения Delphi

Задания построены вокруг реальных решений: прочитать фрагмент, найти ошибочное допущение, выбрать безопасную правку и закрепить её тестом. Всего 25 вопросов и 15 задач с кодом; тематические шкалы охватывают «Обработка исключений try/except», «Гарантированная очистка try/finally», «Собственные исключения», «Освобождение ресурсов» и «Диагностика результата».

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 70 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 1 из 25
В `ExceptChoice` сначала встречается `try`, а затем `except`. Какой вывод можно сделать только после чтения обеих строк?
PascalDelphi / Pascal · Обработка исключений try/except
// Проследите фактическое поведение ExceptChoice.
program ExceptChoice;
{$APPTYPE CONSOLE}
uses System.SysUtils;
begin
  try
    Writeln(StrToInt('12x'));
  except
    on E: EConvertError do
      Writeln('bad number: ', E.Message);
  end;
end.
Вопрос 2 из 25
Какой сценарий по теме «Гарантированная очистка try/finally» отличит исправную реализацию от версии со скрытым дефектом?
Вопрос 3 из 25
Как исправить обработчик `EInsufficientFunds`, чтобы интерфейс показывал остаток и запрошенную сумму без разбора текста сообщения?
Вопрос 4 из 25
Модуль, использующий тему «Освобождение ресурсов», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 5 из 25
В теме «Диагностика результата» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 6 из 25
Какое свойство темы «Обработка исключений try/except» становится решающим на граничном входе или при другом порядке действий?
Вопрос 7 из 25
Правка по теме «Гарантированная очистка try/finally» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 8 из 25
Какой договор должен описывать модуль, выбрасывающий `EInsufficientFunds`, чтобы вызывающий код не зависел от реализации сообщения?
Вопрос 9 из 25
Для темы «Освобождение ресурсов» обычный путь и граничный путь дают разные риски. Какой вывод учитывает оба, не подменяя один другим?
Вопрос 10 из 25
Две версии `DiagnosticContext` сохраняют порядок `raise EConvertError.Create('line 17');` → `on E: Exception do`. Какое свойство останется общим для обеих?
PascalDelphi / Pascal · Диагностика результата
// Отделите правило языка от удачного запуска DiagnosticContext.
program DiagnosticContext;
{$APPTYPE CONSOLE}
uses System.SysUtils;
procedure ImportFile(const FileName: string);
begin
  try
    raise EConvertError.Create('line 17');
  except
    on E: Exception do
      raise EConvertError.CreateFmt('Import %s failed: %s', [FileName, E.Message]);
  end;
end;
begin end.
Вопрос 11 из 25
Две реализации темы «Обработка исключений try/except» совпадают на обычном примере. Какое различие всё же меняет их договор?
Вопрос 12 из 25
В практическом сценарии по теме «Гарантированная очистка try/finally» меняются входные данные и порядок действий. Какой вывод остаётся корректным?
Вопрос 13 из 25
Какой регрессионный набор проверит и предметный тип ошибки, и сохранность её данных после изменения текста сообщения?
Вопрос 14 из 25
Какой граничный результат следует ожидать в `NestedResources`, когда после `Input := TFileStream.Create('a.bin', fmOpenRead);` выполняется `Input.Free;`?
PascalDelphi / Pascal · Освобождение ресурсов
// Определите реальную гарантию в NestedResources.
program NestedResources;
{$APPTYPE CONSOLE}
uses System.Classes;
var
  Input, Output: TFileStream;
begin
  Input := TFileStream.Create('a.bin', fmOpenRead);
  try
    Output := TFileStream.Create('b.bin', fmCreate);
    try
      Output.CopyFrom(Input, 0);
    finally
      Output.Free;
    end;
  finally
    Input.Free;
  end;
end.
Вопрос 15 из 25
Модуль, использующий тему «Диагностика результата», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 16 из 25
Реализацию темы «Обработка исключений try/except» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться?
Вопрос 17 из 25
В теме «Гарантированная очистка try/finally» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 18 из 25
Какие данные обработчик `EInsufficientFunds` получает без разбора строки `Message`?
PascalDelphi / Pascal · Собственные исключения
// Предметное исключение публикует структурированные данные только для чтения.
program DomainException;
{$APPTYPE CONSOLE}
uses System.SysUtils;
type
  EInsufficientFunds = class(Exception)
  private
    FBalance, FRequested: Currency;
  public
    constructor Create(ABalance, ARequested: Currency);
    property Balance: Currency read FBalance;
    property Requested: Currency read FRequested;
  end;
constructor EInsufficientFunds.Create(ABalance, ARequested: Currency);
begin
  FBalance := ABalance;
  FRequested := ARequested;
  inherited CreateFmt('Balance %.2f, requested %.2f', [ABalance, ARequested]);
end;
begin
  try
    raise EInsufficientFunds.Create(25, 40);
  except
    on E: EInsufficientFunds do
      Writeln(E.Balance:0:2, ' ', E.Requested:0:2);
  end;
end.
Вопрос 19 из 25
Две реализации темы «Освобождение ресурсов» совпадают на обычном примере. Какое различие всё же меняет их договор?
Вопрос 20 из 25
В практическом сценарии по теме «Диагностика результата» меняются входные данные и порядок действий. Какой вывод остаётся корректным?
Вопрос 21 из 25
Для темы «Обработка исключений try/except» обычный путь и граничный путь дают разные риски. Какой вывод учитывает оба, не подменяя один другим?
Вопрос 22 из 25
Будет ли выполнен `Writeln('after')` после исключения внутри `try..finally`?
PascalDelphi / Pascal · Гарантированная очистка try/finally
// finally освобождает ресурс, но не перехватывает исключение.
program FinallyFlow;
{$APPTYPE CONSOLE}
uses System.Classes, System.SysUtils;
var
  S: TStringList;
begin
  S := TStringList.Create;
  try
    raise EReadError.Create('read failed');
  finally
    S.Free;
  end;
  Writeln('after');
end.
Вопрос 23 из 25
Обработчик различает ошибки оплаты. Почему ветвление по тексту `Message` создаёт скрытый дефект?
Вопрос 24 из 25
Реализацию темы «Освобождение ресурсов» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться?
Вопрос 25 из 25
Обычный пример по теме «Диагностика результата» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?

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

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

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

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