Avatar billede bumle90 Nybegynder
07. december 2001 - 00:08 Der 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?
Avatar billede tmceu Praktikant
07. december 2001 - 00:15 #1
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.
Avatar billede greybeard Nybegynder
07. december 2001 - 00:16 #2
Hvis du har en metode, der throws Exception,skal du gøre noget ved, der hvor den kaldes fra.
Har du prøvet en try{metodekald}catch(IOException e){}
Avatar billede tmceu Praktikant
07. december 2001 - 00:17 #3
Jeg tror det går galt i din opfattelse af \"Den metoder skal jo så throws IOException pga. FileWriteren\"

Nej, den skal ikke throw\'e fejlen, men den skal catch\'e den
Avatar billede tmceu Praktikant
07. december 2001 - 00:18 #4
I disse \"The Julekalender\" tider, er greybeard så lig Good Old Gammelnok ? :-)
Avatar billede carstenknudsen Nybegynder
07. december 2001 - 10:53 #5
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.
Avatar billede martin_schou Nybegynder
07. december 2001 - 11:03 #6
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.
Avatar billede carstenknudsen Nybegynder
07. december 2001 - 11:10 #7
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.
Avatar billede martin_schou Nybegynder
07. december 2001 - 11:15 #8
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.
Avatar billede carstenknudsen Nybegynder
07. december 2001 - 11:23 #9
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester