Exceptions in PHP5
Max Plössl
- php
0 Bio0 Andreas Korthaus0 fanelf.de
Hallo @all!
Ich hab da mal eine frage: Welche Vorteile haben Exceptions im Gegensatz zu normaler Fehlerbehandlung. Beispiel:
class Klasse // $this->file kommt vom Konstruktor
{
public function Handle()
{
$this->handle = fopen($this->file, 'r');
if(!$this->handle)
{
throw new Exception('Kein Handle');
}
}
}
$a = new Klasse('gibtsnicht.txt');
try
{
$a->Handle();
}
catch(Exception $e) { echo $e->getMessage() }
--------------------------------------------------------------------
Im Gegensatz zu:
class Klasse // $this->file kommt vom Konstruktor
{
public function Handle()
{
$this->handle = fopen($this->file, 'r');
if(!$this->handle)
{
return 0; // 0 als Anzeige für Fehler, sonst 1
}
else
{
return 1
}
}
}
$a = new Klasse('gibtsnicht.txt');
if(!$a->Handle()) echo 'Kein Handle';
was ist jetzt also besser, was sollte man verwenden?
MfG, Max
Sup!
Exceptions sind ganz dolle OO, und sie können ggf. an anderer Stelle (in höheren Instanzen) behandelt werden.
Gruesse,
Bio
Hallo Bio!
Exceptions sind ganz dolle OO, und sie können ggf. an anderer Stelle (in höheren Instanzen) behandelt werden.
Man sollte es also verwenden, wenn es einem zur Verfügung steht und die alten Möglichkeiten nicht mehr verwenden, oder?
MfG, Max
Sup!
Tja also... man sollte es verwenden, wenn es Sinn macht, den Fehler nicht sofort zu behandeln sondern woanders - oder ggf. mehrere gleichartige Fehler an einer Stelle.
Gruesse,
Bio
Hallo!
Ich hab da mal eine frage: Welche Vorteile haben Exceptions im Gegensatz zu normaler Fehlerbehandlung.
was ist jetzt also besser, was sollte man verwenden?
Tja, das ist wohl so eine Art Religion ;-)
Viele Leute sagen man soll Exceptions nicht für normale Fehlerbehandlung verwenden, sondern nur bei "Ausnahme-Fehlern", z.B. eine fehlgeschlagene Datenbank-Verbindung oder sowas. Andere verwenden Exceptions für jede Fehlerbehandlung, wie es AFAIK in Python typischerweise gemacht wird.
Ein paar Links zum Thema:
http://www.digitalsandwich.com/archives/34-What-did-exceptions-ever-do-to-you.html (inkl. anschließender Diskussion)
http://www.samspublishing.com/articles/article.asp?p=170279&seqNum=3&rl=1
http://wiki.ciaweb.net/yawiki/index.php?area=PEAR_Dev&page=RfcExceptionUse (weitere Diskussionen unter "Further Reading")
Grüße
Andreas
Ich hab da mal eine frage: Welche Vorteile haben Exceptions im Gegensatz zu normaler Fehlerbehandlung. Beispiel:
was ist jetzt also besser, was sollte man verwenden?
was ist oop? und was ist ein fehler?
etwas unter oo aspekten meiner logik widersprechendes oder unnormales sollte besser als return-quittung gemeldet werden.
tritt aber ein ereignis auf, welches nicht zu meinem oo modell gehört, also von außerhalb meines 'einflußbereiches' ist es wohl angebracht, dies durch eine ausnahme anzuzeigen.
'fehler' sollen ja auch dem initiator des 'use-case' gemeldet werden, und zwar sinnvoll und nicht mit ausnahmetraces.
es macht für mich keinen sinn, auf eine nicht vorhandene artikelnummer mit einer execption zu antworten.
andererseits könnte bspw. auf eine fehlende netzverbindung durchaus mit einer ausnahme reagiert werden, da diese nicht in mein oo modell gehört.