s <> ''
und
s = ''
prüft theoretisch auf die globale Konstante eines Leerstrings ''.
Da ein Leerstring aber einem nil entspricht, ergibt das somit eine Prüfung auf nil, bzw. 0.
Das Length ist eine Funktion und die will erstmal aufgerufen werden, also Sprung (JMP) + Rücksprung (RET), dazu noch eine IF-Abfrage und bis zu zwei ausgelesene Werte (der interne Pointer und die Längenangabe). Erst danach kommt dann deine
=0
-Prüfung dran.
Try selber ist schon OK und vorallem mit Try-Finally sollte man seinen Speicher besser mal sauber halten (Resourcenschutzblöcke).
Auch das Try-Except hat etwas Gutes an sich, aber man sollte es auch ordentlich einsetzen, aber insbesondere nicht zur Ablaufsteuerung.
Eine
Exception Ausnahme sollte eine Ausnahme bleiben und nicht grob fahrlässig im Übermaß missbraucht werden.