I put most of my code in an dll which the main program calls every frame. Of course an exception should never cross the dll boundary, so it is caught by try...except block and reported using different means.

The most troubling part, this paradigm works ideally for Linux, but not for Win32. Both the Wine and WinXP, both the fpc 2.0.4 and 2.2.0 show the same behavior: the try...except block is as effective against the Access Violation as a wet tissue paper.

In short, a simple byte(nil^):=0; becomes lethal.

Am I doing something wrong? The program exceptions created by the raise operator are caught normally.

P.S. The divisions by zero aren't caught too.