Avatar billede mik28 Seniormester
30. august 2008 - 07:59 Der er 13 kommentarer og
2 løsninger

try, catch, finally

Hej Eksperter,

Jeg har lige et spørgsmål om try catch finally.

try{
et eller andet
}
catch(Exception e){}
finally{}

er rigtigt ikke?

Hvis jeg nu ikke vil fange den Exception så kan jeg vel

try{
et eller andet
}
finally{}

Sagen er den at jeg ikke vil have Exceptionen ud i loggen. Det vil sige jeg vil gerne men dem jeg laver det for vil ikke. Mit spørgsmål er i virkeligheden hvad forskellen på catch og finally er?
Avatar billede jakobdo Ekspert
30. august 2008 - 08:32 #1
catch: fanger en exception.
finally: kan bruges til at rydde op til allersidst.

Fandt f.eks. dette eksempel, som beskriver det ok:
http://www.devdaily.com/blog/post/jdbc/-decent-example-of-using-try-catch-finally-with-jdbc/
Avatar billede mik28 Seniormester
30. august 2008 - 09:23 #2
jamen jeg kan ikke have en try uden at have enten en catch eller finally vel
Avatar billede jakobdo Ekspert
30. august 2008 - 10:23 #3
Ideen er med try/catch er jo at vi prøver noget, hvis ikke det går godt, så fanger vi en exception.
Men du kan jo undlade at eksekvere noget kode i din catch()
Avatar billede mik28 Seniormester
30. august 2008 - 15:24 #4
Selv om jeg ikke laver noget i catch så vil exceptionen stadig blive skrevet i jsvc loggen ikke sandt
Avatar billede mik28 Seniormester
30. august 2008 - 15:24 #5
det er det jeg gerne vil undgå
Avatar billede mik28 Seniormester
30. august 2008 - 16:09 #6
ahh. Jeg tror jeg har forstået det. Forskellen på catch og finally er at catch fanger exceptionen og finally ser bort fra den, men der skal være mindst en af dem på en try, right?
Avatar billede arne_v Ekspert
30. august 2008 - 17:22 #7
Koden i en catch blok bliver kørt hvis den angivne exception sker.

Koden i en finally block bliver altid kørt - success, exception i catch blok, en runtime
exception er ligegyldigt (den bliver dog ikke kørt hvis strømmen går af computeren !).

Hvis du vil sluge en exception, så skal du bruge en catch. En exception der catches
vil ikke blive logget. Hvilket betyder at du bør eksplicit logge den så man kan se
hvad der sker i programmet !!
Avatar billede arne_v Ekspert
30. august 2008 - 17:29 #8
devdaily linket er ikke super ...

skal det være pænt vil man også close ResultSet

man vil normalt teste for null inden man bruger et objekt i finally

System.err.println er ikke godt i server context

mange (inklusive mig) synes ikke at det er pænt at bruge finally til at
udføre kode efter en return
Avatar billede arne_v Ekspert
28. oktober 2008 - 03:00 #9
Tid at få afsluttet her ?
Avatar billede mik28 Seniormester
28. oktober 2008 - 06:50 #10
ja
Avatar billede arne_v Ekspert
21. januar 2009 - 03:03 #11
nogen der skal smide et svar ?
Avatar billede mik28 Seniormester
21. januar 2009 - 11:25 #12
meget gerne
Avatar billede arne_v Ekspert
22. januar 2009 - 01:53 #13
jeg antager at vi begge skal så

her er fra mig

så venter vi på jakobdo
Avatar billede jakobdo Ekspert
22. januar 2009 - 08:04 #14
Jeg smider da også gerne et svar.
Avatar billede jakobdo Ekspert
22. januar 2009 - 12:37 #15
Takker for point.
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