Ergebnis 1 bis 20 von 34

Thema: Exceptions

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von Jesus_666 Beitrag anzeigen
    In Java ganz eindeutig. […] wenn man nicht jeden zweiten Funktionsaufruf in try/catch wickelt, gilt das als schlechter Stil (so viel übrigens zu C++s häßlichen ifs).
    Das habe ich bisher weder irgendwo gesehen noch gehört. o_O" Im Regelfall genügen doch in den meisten Funktionen ein bis zwei solcher Blöcke, unterschiedliche Fehler aus den einzelnen Aufrufen/Statements kann man zur Not ja meist auch am Exception-Typ erkennen. Also ich weiß jedenfalls nicht, woher du das hast, scheint mir auch im Zusammenhang mit dem Rest des Satzes mehr ein Vorurteil zu sein.
    Und in C (i.e.: bei der Fehlercode-Zurückliefer-Methode) kommt man um das händische Prüfen jedes einzelnen Rückgabewertes ja eindeutig nicht herum, ohne potenzielle Fehlerquellen im Code zu lassen.

    (Ahja, und es ist zumindest für mich nicht ersichtlich, worauf sich dein erster Satz im Zitat bezieht. *kratz*)

  2. #2
    Zitat Zitat von drunken monkey Beitrag anzeigen
    Das habe ich bisher weder irgendwo gesehen noch gehört. o_O" Im Regelfall genügen doch in den meisten Funktionen ein bis zwei solcher Blöcke, unterschiedliche Fehler aus den einzelnen Aufrufen/Statements kann man zur Not ja meist auch am Exception-Typ erkennen.
    Nur dann, wenn ein Fehler in einer aufgerufenen Methode bedeutet, daß die komplette aufrufende Methode nicht mehr funktioniert. Wenn dem nicht so ist, hat man kleine Blöcke mit try/catch(/finally) drumrum. Wenn das öfters vorkommt, kann der Code beeindruckend häßlich werden. Letztenendes macht man im Wesentlichen das Gleiche wie bei C(++), nur daß man statt Fehlerkonstanten Aufrufe von Methoden der Exception hat und sich Sprünge spart, falls doch die ganze Methode ruiniert wird.

    Zitat Zitat
    (Ahja, und es ist zumindest für mich nicht ersichtlich, worauf sich dein erster Satz im Zitat bezieht. *kratz*)
    Darauf, ob ich Exceptions verwende.

  3. #3
    Ach, asserts mit Exceptions zu vergleichen ist doch schon fast etwas unhuebsch. Die Idee ist ja doch eine Andere: Bei Exceptions ist der Fehlerfall Teil des Ergebnisses, was bei Asserts wiederum nicht der Fall ist.

    Beides hat seine Daseinsberechtigung. Dementsprechend mische ich auch beides. So verwende ich Asserts in erster Linie zur Flusskontrolle, während ich Exceptions zur Berichterstattung von Fehlern, mit der Umwelt, verwende.

    Der Rest ergibt sich eigentlich genau hier heraus.


    Was für Fehler ich nun per Exceptions, oder Return-Wert erstatte, kommt in erster Linie darauf an, was ich gerade mache. In meinem Hauptprojekt, beispielsweise, verwende ich kaum eine Exception aktiv. Fast alle Grundbibliotheken, die ich verwende, werfen keine Exceptions, und die Fehler die, in den einzelnen Phasen meines Programmes auftreten können, müssen in der Regel ohnehin geordnet angezeigt werden. Ungewollte Zustände müssen zwanghaft zum Abbruch führen. Genau so verwende ich meine API nie so, als dass man sich mit Exceptions etwas sparen würde. Ganz im Gegenteil: Dort wo sie schoen anzuwenden wären, würde ich meinen Usern damit das Leben schwer machen.

    Hingegen werde ich allerdings demnächst wohl alle fopen-calls aus meinen Plugins heraus schreiben, um auf etwas Exception-werfendes umzusatteln. Zur Zeit sind da nämlich einfach keine Checks, ob ein Call nun gut geht, oder eben nicht. Wenn man so herum zu wenig Speicherplatz hat, wird das Programm einfach nur sterben, ohne, dass irgend etwas berichtet wird. Da ist an dann doch besser dran, wenn man gleich auf etwas abstrahierenderes umsteigt, als wenn man sich das Leben unnötig, mit 1000 if-abfragen, schwer macht. Die klassische C-Alternative, um sich die ganzen Abfragen zu sparen, passt mir zu wenig in den restlichen Code. ^^"


    \Jesus
    Gerade Stream-Operationen sind doch ein gutes Beispiel, wie man Exception anwenden sollte. Bei einheitlichen APIs, mit guten Exceptions, spart mans ich definitiv etwas.

    Btw liest sich der lange Post von dir so, als wuerdest du einen Fisch haben wollen. :P



    Zitat Zitat
    Und in C (i.e.: bei der Fehlercode-Zurückliefer-Methode) kommt man um das händische Prüfen jedes einzelnen Rückgabewertes ja eindeutig nicht herum, ohne potenzielle Fehlerquellen im Code zu lassen.
    Denk mal etwas Zeigerlastiger. :P

  4. #4
    Zitat Zitat von Mog Beitrag anzeigen
    Denk mal etwas Zeigerlastiger. :P
    Was willst du mir damit sagen? ^^"
    Wenn ich zeigerlastiger denke, denke ich: Fehlerfall => return NULL; => Segmentation fault => $ gdb … # STIIIIIIRB!!!!!. <__<

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •