Kurz mal als Blick über den Tellerrand: In diversen Programmiersprachen gibt es ganz andere Konzepte, um Fehler zu erkennen und abzufangen.
Das, was wir hier haben, ist die althergebrachte Methode, wie sie auch in purem C zum Einsatz kommt. Eine Funktion gibt "Null" (das ist ein englisches Wort) bzw. "0" zurück, was beides im Endeffekt auf den Zahlenwert 0 hinausläuft. Eine typische Fehlerüberprüfung in C sieht dann also so aus: if(myVal == NULL) { ....
Da hier zurecht Verwechslungsgefahr besteht, existiert in der Standardbibliothek noch die globale Variable errno. Eine Funktion setzt diese bei einem Fehler auf einen situationsabhängigen Zahlenwert (ungleich 0). Damit wären wir dann bei einer Fehlerabfrage a la if(errno) { .... Das kommt einem AutoIt-Programmierer jetzt vermutlich bekannt vor.
Nachtrag: Es gibt tatsächlich auch Sprachen, die schlicht NULL und 0 als unterschiedliche Werte betrachten. "0" ist bspw. eine Instanz der Klasse Integer, "NULL" ist tatsächlich 0.
Das Problem hierbei ist, dass Fehlerbehandlung optional wird. Der Programmierer kann Fehler abfangen - muss es aber nicht. Das kann aus Faulheit, aus Unwissenheit oder einfach durch Vergessen geschehen, ist aber eine sehr große Fehlerquelle. Darüber hinaus ist die Fehlerbehandlung syntaktisch auch nicht vom wirklichen Anwendungscode unterscheidbar.
In modernen Hochsprachen wird daher meist ein eigenes Sprachelement für diese Fehlerbehandlung genutzt, oftmals Exception (dtsch. Ausnahme) genannt. Dabei unterscheidet man bspw. bei Java zwischen einer checked und einer unchecked Exception. Beide haben gemein, dass sie mittels eines try-catch-Blockes abgefangen werden. Eine unchecked Exception kann ich abfangen, eine checked Exception muss ich abfangen. Im try-Bereich steht der Code, der eventuell einen Fehler auslösen könnte. Im catch-Bereich steht der Code, der den Fehler beim Auftreten behandelt. In Java sähe unser Beispiel mit Number() irgendwie so aus:
try {
myVal = Integer.parseInt(myString);
} catch(NumberFormatException nfe) {
System.out.println("Invalid Number");
}
Damit ist der normale Ablauf (try) strikt vom Fehlerfall (catch) getrennt. Außerdem können Ausnahmen bei verschachtelten Aufrufen auch nach oben "durchgereicht" werden.
Sowas wäre der moderne Weg, Fehler abzufangen. Aber leeeider bietet AutoIt uns das nicht.