kostenloser Webspace werbefrei: lima-city


spezielle Exception catchen bei throws Exception

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    Ich frage mich, ob man eine spezielle Exception fangen kann, wenn man throws Exception in der Methode geschrieben hat.
    So in etwa:
    try {
        methode()
    }
    catch( AndereException e ) {}  // wird das aktiv?
    catch( Exception e ) {}
    
    public void methode throws Exception {}


    Mein Problem ist, dass Implementationen eines Interfaces durchaus Exceptions werfen könnten, aber ich das nicht genau sagen kann. die dürften sie ohne das throws nicht werfen, weil das dann kein Override ist und wenn kein Override muss man einen andern Methodenamen verwenden. Eigentlich sind ja RuntimeExceptions dafür da, aber bei mir betrifft das unter anderem InterruptingException, die eine Checked Exception ist.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    lt. dem dritten Beispiel hier sollte das funktionieren:
    http://schabby.de/try-catch-java/
    dort werden auch zwei verschiedene Exceptions unterschieden und abgefangen.

    Hier wird das auch gut verstanden:
    http://www.mpi-inf.mpg.de/departments/d5/teaching/ss05/is05/java/GoToJava2.2/html/k100076.html#sectlevel3id012002005

    hth
  4. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    Danke schonmal für die schnelle Antwort, aber da bezieht sich die MalformedURLException auf den Konstruktor und die IOException auf die openStream Methode. Deshalb wird das auch so in der Methode per throws deklariert.
    Ich werds wohl irgendwie testen müssen. Da ist Java nur so ungelenk, weil man soviel erstmal amchen muss.:slant:
  5. Also theoretisch müsste das schon gehen.

    Java schaut sich das erste catch mit der AndereException an und sieht: "aaah passt" ;-)
    dann schaut es sich das nächste an und sieht: "aaaah das passt auch"

    Aber falls du auf was anderes gestoßen bist, bitte mal posten ;-)

    Viel Spaß
  6. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    Ja ich habs auch nochmal getestet und es funktioniert tatsächlich.
    Allerdings habe ich das alles jetzt vereinheitlicht, indem ich selbst eine spezielle Exception definiert habe und jede andere Exception muss dann als cause dem Konstruktor übergeben werden. Ich glaube das ich designtechnisch sinnvoller, da ansonsten derjenige, der die Methode verwendet alle Exceptions catchen muss und demzufolge auch unabsichtlich die ganzen RuntimeExceptions abbekommt, die er dann nach nem instanceof wieder werfen müsste.
    Also eher unschön.
  7. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    reimann schrieb:
    try {
        methode()
    }
    catch( AndereException e ) {}  // wird das aktiv?
    catch( Exception e ) {}
    
    public void methode throws Exception {}



    Solche Konstrukte funktionieren, haben aber eine Eigenheit:
    wenn du
    try {
        methode()
    }
    catch( Exception e ) {}
    catch( AndereException e ) {}  // wird das aktiv?

    schreibst wird AndereException niemal aufgerufen, da
    AndereException extends Exception
    . Der 1. catch der zutrifft wird ausgeführt, alle anderen nicht. Da AndereException von Exception erbt wird natürlich catch(Exception e) zutreffen und die AndereException im Teil für Exception behandelt!
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!