W dużym projekcie uzywającym CORBA występuje CZASAMI wyjątek "External
Exception EEFFACE".
Jest podejrzenie, że być może jest to związane z chwilowymi brakami
połączenia między klientem a serwerem, ale to tylko podejrzenie.
Generalnie wyjątek ten mowi tyle, że jest używana jakaś najprawdopodobniej
DLLka napisana w C++ i ta DLLka przekazuje wyjątek... Aplikacja Delphi nie
potrafi interpretować C++'owych wyjątków i rzuca standardowe External
Exception EEFFACE.
Czy ktoś może wie czy można i jak interpretować takie wyjątki w Delphi?
A może ktoś ma jakiś pomysł żeby wykryć przyczynę? Logi z Eureki nic nie
mówią.
Pozwiodronka,
Zeman.
try
ProcFromDLL;
except
on E : EExternalException do
begin
Name := PChar(E.ExceptionRecord.ExceptionInformation[0]);
caption := Name;
end;
end;
U mnie bylo 'VISRemarshal', Trzeba troche przerobic TCORBAObject zeby
obslugiwalo remarshalling. Wywalalo sie na blednie odebranym _Input.
Pozwiodronka,
Zeman.
Po zastanowieniu, my�l�, �e chodzi o twarz. Napisa�o przecie� wyra�nie
"eeee... face?"
pozdr�fka...
Andrzej
:D ooo tak, na to nie wpad�em, my�l� �e mog� to przyj�� za pewnik :D
Swoja droga, w rekordzie Exceptiona jest cos takiego jak ExceptionAddeess,
tak sobie mysle, ze pewnie mozna napisac DLLke w BCB z funkcj� przyjmuj�c�
ExceeptionAddress na wej�cie i zwracaj�c� komunikat b��du w postaci
tekstu... tak sobie my�l�, �e w BCB mo�e by by�o �atwo dokona� interpretacji
b��du, wszak wyj�tek zosta� wygenerowany w�a�nie w C++.
try
wywolaj_metode_dll_ktora_wyrzuci_wyjatek;
except
on E : EExternalException do
if exception_jest_eefface(E) then
raise
EMyExternalException.Create(wywolaj_funkcje_z_dll_tlumaczacej_exception(E.ExceptionRecord.ExceptionAddress));
end;
Jesli ktos czyta watek i zna C++ niech powie czy to co piszďż˝ ma sens?
Pozwiodronka,
Zeman.
pozdrófka...
Andrzej