Exceptions bei Computergames



  • Original erstellt von ChaosAngel:
    **Das sie keine Performance beanspruchen solange sie nicht fallen ist gelogen, da der Compiler zusatzinformationen (StackTrace) bereitstellen muss, und diese vergrössern natürlich den Code!
    **

    Codevergrößerung heißt nicht immer Verlangsamung.
    Der Festplatte ist es egal ob sie 123 oder 124 Sektoren laden muss, ebenso dem RAM.
    Wenn das Programm läuft, kostet Code, der nur passiv rumliegt, gar nichts.

    p.s.:
    Naja, vielleicht macht der Compiler hier und da ein mov irgendwo,irgendwas rein. Aber das fällt bei heutigen Prozessoren überhaupt nicht mehr ins Gewicht, wenn es geschickt platziert ist.



  • Codevergrösserung ist eben nicht egal ...
    Ich meine nicht was von Festplatte geladen werden muss oder ähnliches !
    Es entsteht durch den StackTrace zusätzlicher Overhead der ProzessorPipe und auch einige Caches belastet ! Ich kenn mich mit dem ganzen LowLevel kram leider nicht aus, ich weiss nur das durch irgendwelche Pages oder son shit da Overhead entsteht !
    Aber wie ich auch schon sagte, er ist vernachlässigbar wenn sie richtig angewendet werden.

    PS: Auch im Gameloop kann man ohne Probleme Exceptions benutzen !!!



  • Original erstellt von ChaosAngel:
    **
    Auch im Gameloop kann man ohne Probleme Exceptions benutzen !!!**

    Klar. Aber nur in wirklichen Ausnahmesituationen. Sonst sind Exceptions fehl am Platze.
    Es sollte z.B. keine Exception ausgelöst werden, wenn jemand von einer Waffe getroffen wird oder wenn ein Gegner stirbt. Das ist keine Ausnahme.
    Auch ein Tor oder Portal zu einem neuen Level sollte nicht unbedingt eine Exception auslösen.

    Exceptions sollten im normalen Programmverlauf nicht geworfen werden, außer wenn etwas wirklich ernstes passiert, das eine (tiefliegende) Funktion beim besten Willen nicht selbst beheben kann.



  • Es sollte z.B. keine Exception ausgelöst werden, wenn jemand von einer Waffe getroffen wird oder wenn ein Gegner stirbt. Das ist keine Ausnahme.

    Ganz meine Meinung, ich sehe nur leider viel zu oft Code, der Exceptions
    als augemotzes Mittel zu retrun-Wertübergabe benutzt.
    Nach dem Moto, was die Funktion sagen will, steht in der Exception die sie
    auswirft. 😮



  • Don't use exceptions for flow control. (...) It violates the PrincipleOfLeastAstonishment. This makes it harder for programmers to read. Perhaps more important, it's not what compiler implementors expect. They expect exceptions to be set up often but thrown rarely, and they usually let the throw code be quite inefficient.

    http://c2.com/cgi/wiki?DontUseExceptionsForFlowControl



  • Was spricht eigentlich dagegen, keine Exceptions zu benutzen? 😉



  • Original erstellt von TGGC:
    Was spricht eigentlich dagegen, keine Exceptions zu benutzen? 😉

    a) speed (wenn exceptions gut implemetiert sind)
    b) klarheit (wenn progger gut coden kann)
    c) codegröße (nicht mehr 50% des c-codes für fehlerweiterreichung)
    d) ihr müßt es gar nicht raffen. macht weiterhin betriebssysteme in c und games in c, denn das ist üblich so. schnelle oberflächen am besten in java.



  • Was spricht eigentlich dagegen, keine Exceptions zu benutzen?

    kotzen zu müssen bei Fehlerhandling.. Rückgabewerte werden doch eigentlich vergewaltigt wenn man sie als Error-Code verwendet

    denn das ist üblich so.

    guter Grund.. wenn's wo üblich ist , ne Klippe runterzuspringen, sollte man es dann auch machen? 😃



  • Bei integer werten muss ich jedesmal überprüfen, wie der Wert denn grade ist: Abreit, egal, ob ein Fehler auftritt oder nicht.

    Bei exceptons passiert erst dann was, wenn ein Fehler geworfen wird: Nur arbeit, wenn ein Fehler auftritt. Und dann ist es eh egal.



  • Na, da ich die Probleme a bis c nicht hab... 😉



  • Moment. Du programmierst Spiele und bei dirist Geschwindigkeit kein problem. Schreibst du rundenbasiertes Zeug?

    Mehr klarheit im Code ist immer von Vorteil, auch wenn man vorher bereits recht sauberen Code hat.

    Und bei dir gibts keine Fehlerbehandlung?



  • Original erstellt von Helium:
    Moment. Du programmierst Spiele und bei dirist Geschwindigkeit kein problem. Schreibst du rundenbasiertes Zeug?

    Nein, aber die Geschwindigkeit ist nich dadurch begrenzt, wie schnell Fehler behandelt werden.

    Original erstellt von Helium:
    Mehr klarheit im Code ist immer von Vorteil, auch wenn man vorher bereits recht sauberen Code hat.

    Der Vorteil ist das ich meine nicht vorhandenen Probleme reduziere?

    Original erstellt von Helium:
    Und bei dir gibts keine Fehlerbehandlung?

    Hab ich nie behauptet.


Anmelden zum Antworten