07. december 2001 - 00:08Der er
8 kommentarer og 1 løsning
IOException
Lad os sige jeg har en stopknap på min GUI. Når jeg trykker på denne stopknap har jeg en klasse der tager sig af alle brugerinputs, altså også dette knappetryk. Dvs. denne klasse implementerer actionlistener. Jeg vil så gerne fra actionPerformed fra denne klasse kalde en anden metode hvori jeg laver en FileWriter. Den metoder skal jo så throws IOException pga. FileWriteren. Mit spørgsmål er så...i den metode hvor jeg kalder metoden med FileWriter, altså actionPerformed, hvorfor skal den også throws IOException når jeg allerede har sat metoden med FileWriter til det?
Alle kald til en metode der throw\'er en fejl, skal implementere try/catch
Som jeg forstår dit spørgsmål, er det ikke nødvendigt at den kode hvori du kalder FileWriter throw\'er en IOException, den bliver throw\'et af filewriteren inde i den klasse, d.v.s. at den klasse skal catch\'e IOException.
Lad mig rette en lille misforståelse: Det er ikke nødvendigt at try/catche et metode kald der kan kaste en exception. Man kan alternativt vælge at erklære sin egen metode til at \"throws IOException\" så \"kaster\" man problemet videre til næste niveau af kald.
Carsten - så vidt jeg lige kan vurdere, kører han et MVC pattern, hvor hans FileWriter er Model - den kaster exceptions, som skal gribes på et tidspunkt. Der er to steder, han kan gøre det - i controlleren (smartest) eller i viewet (tåbeligst).
Som greybeard er inde på, så skal bumle90 indkapsle sit kald til FileWriter i en try/catch, og som nævnt ovenfor er det smarteste sted at gøre det i controlleren.
Martin: jeg er enig med dig. Iøvrigt skulle mit \"svar\" have være en kommentar; det var udelukkende møntet på \"Alle kald til en metode der throw\'er en fejl, skal implementere try/catch\" hvilket er lidt forvirrende.
Ahh - ja, det er korrekt. Havde lige overset den vinkel på svaret :-).
Jeg har da også en tendens til at sætte mange af mine metoder til at kaste Exceptions videre - sommetider ved at tage Exception A og pakke den ind i en ny (hjemmebrygget) Exception, som ikke er noget specielt ud over en subklasse Exception. Ved ikke helt, hvorfor jeg gør det - men det gør jeg .. hehe.
Det foreslås i Effective Java (der virkelig kan anbefales) at man genbruger så mange af de generelle exceptions som muligt, men bruger også selv hjemmelavede exceptions når det virker fornuftigt. I 1.4 skal vi til at bruge getCause() metoden der tillader at komme tilbage til den oprindelige exception/throwable; det er meget nytting feature.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.