[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