1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Генерация исключения

Тема в разделе "Inno Setup", создана пользователем hexep, 3 мар 2019.

  1. Пользователь

    Регистрация:
    30 янв 2013
    Сообщения:
    8
    Симпатии:
    0
    Скрипт для расширенной версии Inno Setup:
    Код (Text):
    [Setup]
    AppName=My Program
    AppVersion=1.5
    DefaultDirName={pf}\My Program
    DefaultGroupName=My Program
    OutputDir=userdocs:Inno Setup Examples Output

    [Files]
    Source: "MyProg\MyProg.exe"; DestDir: "{app}"

    [Code]

    function InitializeSetup(): Boolean;
    begin
      try
        ExpandConstant('{exception}');
      except
        MsgBox(Format('Runtime error (at %d:%d)'#13#10, [ExceptionProc, ExceptionPos]) + ExceptionToString(ExceptionType, ExceptionParam), mbError,  MB_OK);
      end;
    end;

    Вопрос - что за значения отображают ExceptionProc и ExceptionPos?

    В моем случае отображаются 10 и -2.
     
  2. Старожил

    Регистрация:
    31 мар 2015
    Сообщения:
    336
    Симпатии:
    172
    Пол:
    Мужской
    Соотносится с процедурой RaiseLastException - вызов последнего исключения.
    Exception - исключение. Соответственно:

    ExceptionProc - исключая процедуру (Cardinal);
    ExceptionPos - исключая позицию (Cardinal);
    ExceptionType - исключая тип (TIFException);
    ExceptionParam - исключая параметр (String).
     
  3. Пользователь

    Регистрация:
    30 янв 2013
    Сообщения:
    8
    Симпатии:
    0
    SBalykov,
    ExceptionType - тип исключения (ErDivideByZero, ErMathError, erCouldNotCallProc, erOutofRecordRange, erOutOfMemory и т.п.);
    ExceptionParam - текст сообщения об ошибке;
    ExceptionProc - исключение в процедуре, но какой? что за возвращаемое значение 10?
    ExceptionPos - что за позиция, где или относительно чего, что за -2?
     
  4. Пользователь

    Регистрация:
    13 ноя 2015
    Сообщения:
    17
    Симпатии:
    42
    Пол:
    Мужской
    Индекс процедуры, в которой произошло исключение, из внутреннего списка процедур байт-кода. В дампе байт-кода у вас будет что-то типа Proc [10] Export: INITIALIZESETUP 26
    -2: искючение поймано и обработано (код обернут в try - except)
    -1: исключение поймано, но не обработано (код обернут в try - finally)
    > 0: позиция относительно начала байт-кода процедуры, в которой произошло исключение (код не обернут в try - except - finally)
     
    hexep, SBalykov и sergey3695 нравится это.

Поделиться этой страницей