Personally I would write the engine so that it handles expected errors without informing the user, but any error that happens that I'm not expecting will result in the application exiting and then showing some kind of error dialog/report. It all depends on what kind of errors you are talking about.

For instance access violations usually mean something has gone really wrong, so I would exit. But an error connecting to a remote server would not cause the applicaton to exit but handle the error in some way (not always with a dialog).

Showmessage will not work in a full screen application as the dialog is displayed behind the fullscreen window (one of the reasons why you can't debug a full screen app unless you have two monitors). You would need to write your own UI to handle that I think.