phpbar.de logo

Mailinglisten-Archive

[php] assert()

[php] assert()

Hartmut Holzgraefe hartmut_(at)_six.de
Mon, 21 Aug 2000 16:25:47 +0200


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