powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Редактирование исключения
12 сообщений из 12, страница 1 из 1
Редактирование исключения
    #40062864
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таком коде нет криминала?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
try
  CheckError;
except
  on E: EOleSysError do begin
    E.ErrorCode := E_INVALIDARG;
    raise;
  end;
end;

проверил, вроде работает.

Цель: поймать исключение, изменить одно поле и выбросить дальше

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Редактирование исключения
    #40062865
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этом - нет.

P.S. Проблема может быть в таком:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
try
  CheckError;
except
  on E: EOleSysError do begin
    E.Message := 'что-то там';
    raise;
  end;
end;



Если, вдруг, EOleSysError идёт не из твоего модуля и пакеты не используются, то строка и объект будут выделены не твоим менеджером памяти. Для объекта это не страшно - там деструктор виртуальный, а для строки - ой.
...
Рейтинг: 0 / 0
Редактирование исключения
    #40062867
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker
В этом - нет.
Спасибо
...
Рейтинг: 0 / 0
Редактирование исключения
    #40062880
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker
Если, вдруг, EOleSysError идёт не из твоего модуля и пакеты не используются...

В этом случае управление сюда и не попадет, потому что будет (E is Exception) = False
...
Рейтинг: 0 / 0
Редактирование исключения
    #40062881
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Rusov
В этом случае управление сюда и не попадет, потому что будет (E is Exception) = False
А если компилятор одной версии?
...
Рейтинг: 0 / 0
Редактирование исключения
    #40062882
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Не важно. VMT все равно разные.
...
Рейтинг: 0 / 0
Редактирование исключения
    #40062885
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker
Если, вдруг, EOleSysError идёт не из твоего модуля и пакеты не используются, то строка и объект будут выделены не твоим менеджером памяти. Для объекта это не страшно - там деструктор виртуальный, а для строки - ой.

А то что обработчик except потом освобождает Exception - это будет не ой?..
...
Рейтинг: 0 / 0
Редактирование исключения
    #40062887
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
А то что обработчик except потом освобождает Exception - это будет не ой?..


Нет. Деструктор же виртуальный.
...
Рейтинг: 0 / 0
Редактирование исключения
    #40062892
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Rusov
Не важно. VMT все равно разные.


Важно. @HandleOnException сравнивает имена классов, а не VMT:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        MOV     ECX,[EAX].vmtInstanceSize
        CMP     ECX,[EDI].vmtInstanceSize
        JNE     @@parent

        MOV     EAX,[EAX].vmtClassName
        MOV     EDX,[EDI].vmtClassName

        XOR     ECX,ECX
        MOV     CL,[EAX]
        CMP     CL,[EDX]
        JNE     @@parent

        INC     EAX
        INC     EDX
        CALL    _AStrCmp
        JE      @@doHandler
...
Рейтинг: 0 / 0
Редактирование исключения
    #40062893
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
В таком коде нет криминала?

Мне смутно помнится, что в случае передачи между DLL-ками с разными копиями VCL есть навороты, когда объект исключения перегенерируется и такое изменение может быть просто-напросто потеряно. То есть криминала нет, но и работоспособность не гарантирована. Но это в любом случае изврат, которого следует избегать, а в остальном присоединяюсь к сказанному GunSmoker-ом.
...
Рейтинг: 0 / 0
Редактирование исключения
    #40062969
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть же хорошая заповедь - из DLL исключения не выпускать. Зачем ею пренебрегать
...
Рейтинг: 0 / 0
Редактирование исключения
    #40063033
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верно, но вопрос же был не в этом.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Редактирование исключения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]