Attenzione!
La cattura degli errori avviene tramite la classe statica Error, che contiene lo stato dell'ultima esecuzione del programma.
Se si mette una sub, o si richiama un metodo e/o funzione sulla catch dell'evento, si perdono le informazioni, perchè viene eseguito un'altro pezzo di programma.
L'unico modo per salvaguardare le informazioni di errore, è quella di salvarle immediatamente in variabili statiche e/o una classe statica, e pubblica.
In questo caso, chiamando la funzione statica, se non vengono effettuate operazioni al di fuori della sola cattura dei dati, la cosa funziona, altrimenti si ha lo stesso comportamento che hai rilevato.
Purtroppo, in gambas non vi è ancora modo di gestire la logica degli errori, e quindi tocca metterci una pezza così.
Un'altra cosa statica e noiosa, è quella dell'utilizzo dell'istruzione CATCH alla fine del metodo, che deve stare solo lì...