[fpc-pascal] Raise exception in libray which will not halt host application
Sven Barth
pascaldragon at googlemail.com
Thu Aug 26 12:41:15 CEST 2021
Am 26.08.2021 um 10:10 schrieb LacaK via fpc-pascal:
> Thank you for both answers!
Please note that you won't be able to catch such an exception with the
type from within the application, e.g.:
=== code begin ===
try
SomeLibraryFunction;
except
on e: TMyObject do
Whatever;
else
WhateverElse;
end;
=== code end ===
The above code would go to the first branch *inside* your library, but
it will *always* go to the else-branch outside your library, cause the
comparison is done on the pointer to the VMT (the class type) which will
be *different* between library and application (even if you use the same
unit!). This is one of the main reasons why dynamic packages are needed
for comfortable use of libraries in Object Pascal, because it allows
such types to be shared across module boundaries.
Regards,
Sven
More information about the fpc-pascal
mailing list