Warning abfangen

Hallo,

ich möchte gerne eine Warning in einem php Skript abfangen.
Habe schon die Suchmaschine bemüht und gefunden, dass ich das Error Reportung mittels error_reporting() beinflussen kann.

Allerdings will ich in meinem Skript die Warning schon gerne mitbekommen, wie mache ich das am besten?

Grüße
Pako

Hi
Das was du suchst nennt sich

Try … Catch

Nachzulesen wie es funktioniert kannst du hier: http://de.php.net/try

Viel spass.

Gruß Lamer

hmm sicher das Try Catch auch bei Warnings funktioniert? Ich will Warnings abfangen, keine Exceptions.

Grüße
Pako

Servus,

ich habs nun mal ausprobiert mit try catch.

Try
{
 mail(......);
}
catch(Exception $x)
{
 echo "Error";
}

er springt da allerdings nicht in den Catch Fall aber bringt eine Warning falls der Mailserver nicht erreichbar ist :frowning:.
Mache ich was falsch oder liegt es wirklich daran das es eine Warning und keine Exception ist?

Grüße
Pako

ich versteh zwar nicht so ganz, was Du willst…
Aber wenn Du nur eine Warnung unterdrücken willst, dann setz einfach ein @ an den Anfang der verursachenden Zeile bzw des befehls…

z.b.
@mysql_query(„select apfel from obst“);

danke :smile:

Ich will nicht das die Warning ausgegeben wird, statt dessen will ich im Falle der Warning selbst eine Ausgabe machen wie z.B. „Der Mailserver ist im Moment nicht erreichbar“. Das schaut dann besser aus als „Warning: Failed to connect to smtp via port 25 in xy.php on Line xy“ oder sowas.

Grüße
Pako

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich will nicht das die Warning ausgegeben wird, statt dessen
will ich im Falle der Warning selbst eine Ausgabe machen wie
z.B. „Der Mailserver ist im Moment nicht erreichbar“. Das
schaut dann besser aus als „Warning: Failed to connect to smtp
via port 25 in xy.php on Line xy“ oder sowas.

ok, das ist verständlicher :wink:
versuchs mal mit

if (@mail($anweisungen)) echo „Mail wurde versendet“;
else echo „Fehler beim mailversand“;

Theoretisch kann man das auch verkürzen mit

if (@!mail($anweisungen)) echo „Fehler…“;

ich bin mir nur nicht ganz sicher, ob es nicht !@ sein müsste… aber ich denke eigentlich @! ist richtig :wink:

Grüße
Munich

Hi

Also Warnings selber abfangen so das sie nicht ausgegeben werden und nicht angezeigt werden ist meines Wissens nicht so direkt möglich.
Ich kenn nur zwei Möglichkeiten

  1. Möglichkeit
    Wie MunichFreak schon sagte mit @ kannst du Warnungen unterdrücken. Und z.b. bei Funktionen kannst du ja ein false zurückliefern (bzw bei PHP Funktionen kommt immer wenn was nicht klappt ein false oder 0 oder NULL oder -1 zurück). Das kannst du dann mit einem IF abfragen.
    Ist aber sehr umständlich, macht den Code langsamer da du überall if abfragen hast und ist nicht das optimum.

  2. Möglichkeit
    Soweit ich mich erinnere kann man die Warnings umleiten in ein Log. Ich hab das mal vor langer Zeit gesehen das das geht. Bzw kann es auch sein das die Automatisch in ein Log geschrieben werden. Dort könnte man also mal ansetzen.

Mehr fällt mir dazu gerade auch nicht ein.

Und ja die Exceptions waren wirklich nur für selbstdeklarierte oder erzeugte Fehler die man abfangen will.

Gruß Lamer