Mailinglisten-Archive |
Sebastian Nohn wrote:
> > assert() soll dazu dienen, bestimmte Bedingungen zu
> > überprüfen, die *immer* wahr sein sollten und deren
> > nicht-Erfüllung auf einen Programmierfehler hindeutet
>
> also so?
>
> assert(girl.age()>18 && girl.age()<30);
> [...]
eher so:
assert("function_exists('imap_open')");
assert( 1/2 == 0.5); // test for the float locale but
$fp = fopen("filename","r");
process_file($fp);
assert("feof($fp)"); // process_file() sollte alles gelesen haben
Wörtlich übersetzt heißt "Assertion" soviel wie "Behauptung",
im C-Umfeld wird es aber eher als "Annahme" oder "Voraussetzung"
verstanden
d.h. eine mit assert() überprüfte "Annahme" ist eine wesentliche
"Voraussetzung" für das Funktionieren eines Programms, nicht eine
einfache Einschränkung des Wertebereichs, und somit wird in der
debug-Phase mit assert() geprüft, ob alle Annahmen auch tatsächlich
erfüllt werden, ansonsten wird die nicht erfüllte Bedingung ausgegeben
und normalerweise das Programm abgebrochen
vor der Auslieferung schaltetet man dann alle assert()s stumm
und hofft, das bei einem eventuell auftretenden Fehler, der lokal
nicht aufgefallen ist, alles irgendwie doch noch weiterfunktioniert,
oder man liefert auch dem Kunden Versionen mit aktiviertem assert(),
um zum Beispiel nur dort auftretende Fehler einzugrenzen
grundsätzlich sollte aber gelten: das eigentliche Programm sollte
auch ohne die assert() Aufrufe funktionieren und z.B. alle
Eingabefehler abfangen
--
Hartmut Holzgraefe
hartmut_(at)_six.de http://www.six.de +49-711-99091-77 fax:-99
php::bar PHP Wiki - Listenarchive