However, these aren't easily adapted to the various platforms.
Yes, it is platform dependent and even FB dependent (Classic versus Superserver) etc.
My problem is that the exception is not being caught: It's generating an error message which asks the user to shut down the program or risk data corruption, which is not what I want.
Yes. You're not especially clear in what code you currently have and you haven't showed us the code where .Connected is set to true, so there might be other errors, but that part with the .CreateDB shouldn't generate an AV (as you're running on 32 bits FPC you shouldn't have problems with the dlls I referred to earlier).
So: are you sure the access violation is in the code snippet you showed us and not somewhere down the line?
You could go project/publish project and zip up your project files and your Firebird DDL, and attach them as a zip, or send them via PM if you want me to take a look.
This piecemeal remote debugging via code snippets gets a bit tedious... for both ends, I think
If the project is confidential, you could perhaps create a non-confidential version.