Max Plössl: Exceptions in PHP5

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

  1. Sup!

    Exceptions sind ganz dolle OO, und sie können ggf. an anderer Stelle (in höheren Instanzen) behandelt werden.

    Gruesse,

    Bio

    --
    Keep your friends close, but your enemies closer!
    1. 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

      1. 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

        --
        Keep your friends close, but your enemies closer!
  2. 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

    --
    SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/
  3. 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.