Seite 2 von 2 ErsteErste 12
Ergebnis 21 bis 34 von 34

Thema: Exceptions

  1. #21
    Hier mal ein Negativ-Code :-)

    Code:
    try {
     while(true) {
      Object value = meinArray[i++];
      // do something
     }
    } catch(ArrayOutOfBoundsException ex) {
     // do nothing, as this just means, that we reached the array's end 
    }

  2. #22
    Mich persönlich würde ja die exakte Arbeitsweise von Exceptions interessieren. Wie genau funktioniert das interne Abfangen? Muss man sich vorstellen das der Code im Try Block geparst wird oder ähnliches? Sprich das bei einem Indexzugriff eines Arrays bspw. vorher durch die Exception geprüft wird ob der Zugriff ungültig wäre?

    Gibt es da vielleicht eine Arbeit zu ? Oder weiß es sogar "zufällig" wer?

  3. #23
    Java hat generell eine Bereichs- und Typenüberprüfung.
    Also bei jedem Zugriff auf irgendwas wird überprüft, ob dieser Zugriff Gültig ist.
    Da ist Java schlauer, als C.
    So eine Bereichs- und Typenüberprüfung machen auch noch andere Sprachen, wie z.B. (Object) Pascal, nur mit dem Unterschied, dass man in anderen Sprachen die Überprüfung deaktivieren kann. Bei Java ist sie zwingend erforderlich.

    Wenn der JVM (Java Virtual Maschine) irgendwas nicht gefällt, schmeißt die JVM eine Exception.

  4. #24
    Zitat Zitat von makenshi Beitrag anzeigen
    Mich persönlich würde ja die exakte Arbeitsweise von Exceptions interessieren. Wie genau funktioniert das interne Abfangen? Muss man sich vorstellen das der Code im Try Block geparst wird oder ähnliches? Sprich das bei einem Indexzugriff eines Arrays bspw. vorher durch die Exception geprüft wird ob der Zugriff ungültig wäre?

    Gibt es da vielleicht eine Arbeit zu ? Oder weiß es sogar "zufällig" wer?
    Hm, klingt nicht so, als hättest du das Prinzip verstanden. Lies dir am besten mal den Wikipedia-Artikel zu Exception Handling durch, die sind meist gute erste Anlaufstellen. Ansonsten findet man über Google sicher auch gute Erklärungen.
    Zum Selbererklären bin ich gerade zu faul. ^^"

  5. #25
    Zitat Zitat von drunken monkey Beitrag anzeigen
    Hm, klingt nicht so, als hättest du das Prinzip verstanden. Lies dir am besten mal den Wikipedia-Artikel zu Exception Handling durch, die sind meist gute erste Anlaufstellen. Ansonsten findet man über Google sicher auch gute Erklärungen.
    Zum Selbererklären bin ich gerade zu faul. ^^"
    Nein, du missverstehst meinen Post.

    Was Exceptions sind und wie man sie anwendet weiß ich durchaus.
    Ich drücke mich wohl unglücklich aus, mich interessiert an sich die genaue technische Implementation. Der Wiki Artikel ist mir nicht unbekannt, den hab ich früher mal gelesen. Der reißt dieses Thema kurz an, jedoch ist er dabei nicht sehr ausführlich. Mich würden da Details interessieren.

  6. #26
    Stack Frames enthalten Einträge zu Exception Handlern. Sobald eine Exception geworfen wird, wird der Call Stack solange aufgelöst (Stack Unwinding), bis ein passender Exception Handler gefunden wird. Falls auch im untersten Stack Frame kein passender Handler gefunden wird, wird das Programm abgebrochen. Mehr wüsste ich auch nicht.

  7. #27
    Zitat Zitat von drunken monkey Beitrag anzeigen
    Natürlich nicht komplett zweckentfremden und z.B., wie manche es schon gemacht haben, als Ersatz für Rückgabewerte nehmen. o_O"
    Ich hatte tatsächlich schon 1x den Fall wo ich vor der Wahl stand: Entweder per Exception einen alternativen Rückgabewert liefern oder umfangreiche Strukturänderungen durchführen. Hab mich für ersteres entschieden. Ich finde die Möglichkeit per Exception nicht nur im Fehlerfall sondern auch allgemein Abzweigungen einzubauen auch ziemlich interessant, auch wenn sie dafür nicht gedacht sind. Die Angst davor, von meinen Arbeitskollegen im Schlaf attackiert zu werden hat mich bisher aber davon abgehalten sowas auch wirklich auszuprobieren.

  8. #28
    Ich habe an der Uni mal einen Übungszettel so gelöst, daß jegliche Kommunikation innerhalb des Programms über Exceptions stattfand. Die Punkte gab's, auch wenn der Code schrecklich war.

  9. #29

  10. #30
    Zitat Zitat von DFYX Beitrag anzeigen
    Daran hab ich schon auf der ersten Seite gedacht.

    @Kyuu: Zwischendurch werden noch finally-Clauses (so vorhanden) behandelt, die auch in den Stackframes gespeichert sein müssten.

  11. #31
    Zitat Zitat von nudelsalat Beitrag anzeigen
    Die Angst davor, von meinen Arbeitskollegen im Schlaf attackiert zu werden hat mich bisher aber davon abgehalten sowas auch wirklich auszuprobieren.
    Stimmt, wäre ja grauenhaft, wenn du in der Arbeit wach bleiben und arbeiten müsstest, statt zu schlafen.
    Zitat Zitat von dead_orc Beitrag anzeigen
    Daran hab ich schon auf der ersten Seite gedacht.
    Dito. XD

  12. #32
    dead_orc: Stimmt, wobei nicht alle exceptionfähige Sprachen einen finally-Konstrukt bieten, wie z.B. C++, allerdings ist es dort möglich mittels des RAII-Pattern Vergleichbares zu implementieren.

  13. #33
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    Da ist Java schlauer, als C.
    Nein ist es nicht. C ist sich dieses Mangels durchaus bewusst, hat ihn aber absichtlich aus Performancegruenden in Kauf genommen. C ist nun einmal darauf designed, nur das noetigste zu machen um moeglichst viel Speed rauszuholen. Und bei jedem Indexzugriff eine Bereichsueberpruefung zu machen, ist definitiv eine vVerschwendung von Prozessorzyklen.

    C geht in seiner Philosophie davon aus, dass der Programmierer genau weiss, was er tut, er also keinerlei Fehler macht per Definition. Es ist eben nur eine Art komfortablerer Assembler.

  14. #34
    Zitat Zitat von Ineluki Beitrag anzeigen
    Nein ist es nicht. C ist sich dieses Mangels durchaus bewusst, hat ihn aber absichtlich aus Performancegruenden in Kauf genommen. C ist nun einmal darauf designed, nur das noetigste zu machen um moeglichst viel Speed rauszuholen. Und bei jedem Indexzugriff eine Bereichsueberpruefung zu machen, ist definitiv eine vVerschwendung von Prozessorzyklen.

    C geht in seiner Philosophie davon aus, dass der Programmierer genau weiss, was er tut, er also keinerlei Fehler macht per Definition. Es ist eben nur eine Art komfortablerer Assembler.
    ptr[i] ist halt nur Umgabgssprache, für *(ptr+i).

Berechtigungen

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