Der gezeigte Code-Teil an sich kann keinerlei Exceptions erzeugen, mit Ausnahme einer Einzigen, welche sich EOutOfMemory nennt.
Ich vermute das die Prüfung "if not assigned(errlist)" manchmal nicht greift.
Kann man die Funktion irgendwie optimieren?
Tja, dann hat wohl jemand außerhalb das errlist nicht orgendlich initialisiert, was man dann natürlich auch außerhalb beheben sollte, da es intern niemals einen sicheren Weg geben kann, um einen "defekten" Zeiger zu erkennen.
Pssst, ich glaub in deinem errlist.Add fehlt ein ", aber für den Fehler hier ist es egal.
Und bezüglich
result:=true;
sollte der Compiler auch was sagen, falls sich nicht irgendwo ein Exit; versteckt, aber auch erstmal egal.