Hi Andrew,
SystemError event is last-resort with limited recovery options. Also, context info is limited to what the Error object can tell you. And even if you decide to recover (i.e. let your application continue) your call stack has been flushed.
I suggest you consider using exception handling because you can localize recovery and error corrections. Also, your code can recover and continue when that is a relevant recovery action. Where SystemError is application wide, your TRY-CATCH can be implemented at whatever position in your code, you find relevant.
I prefer using exception handling - especially when calling web services, using OLE Automation, or otherwise interacting with code that throws exceptions.
Anyways, the previous answers are definitely worth pursuing when you have to do error handling in the SystemError event.
HTH /Michael