Hejsan! Alltså, sker det ett oväntat fel så kan det ju vara bra att ta hand om det på något sätt. Visa ett felmeddelande för användaren istället för att hela applikationen ska dö. Nej det är inte bra att generelt fånga "alla" exeptions om du inte skickar felet vidare. Tack sä mycket för de uttömmande svaren, då förstår jag. Tjena, du verkar ha fått svar på din fråga, men jag skulle vilja tillägga en viktig detalj i Hejsan!Är det smart att alltid avsluta sista catch-blocket i ett try-block med Exceptio
Som rubriken lyder så undrar jag om det är kutym att alltid avsluta ett try-catch block med den generella
undantagshanteraren Exception? Enda användningen för detta är att man då garderar sig mot eventuella fel som eventuellt kan inträffa som man inte vet med sig själv (som man iofs bör göra).
Hur brukar ni göra? Kanske verkar som en dum fråga men jag undrar bara vad ni tycker?
ex
try{
hipp, hopp nu vill jag öppna en fil
}
catch(FileNotFoundException fnfe)
{
skriv ut felmeddelande och avsluta programmet
}
catch(Exception e)
{
garderar mig mot eventuella exceptions som jag inte vet??????
}
//JonasSv: Är det smart att alltid avsluta sista catch-blocket i ett try-block med Exce
Är det en väldigt vital del i programmet som ej går att köra så kan du ju upplysa användaren om det och stänga ner applikatonen lite snyggt, och eventuellt spara ett felmeddelande som han kan skicka till dig. Det är ju bättre än att bara få upp ett "..exception occured.." och en kraschSv: Är det smart att alltid avsluta sista catch-blocket i ett try-block med Exce
För proceduren som anropar antar då att den genomförts framgångsrikt.
Om du inte känner till vilket fel som har uppstått bör du därför alltid skicka det vidare. Om du nått högsta nivån, actionhandlern som anropas när användaren startat funktionen så kan du där fånga undantaget och presentera det för användarna och/eller logga det. Men inte på någon annan nivå.Sv: Är det smart att alltid avsluta sista catch-blocket i ett try-block med Exce
//JonasSv:Är det smart att alltid avsluta sista catch-blocket i ett try-block med Exce
ditt exempel.
Jag kanske är petig när du inte specifikt frågade om det men jag skulle vilja att det
såg ut mer åt det här hållet:
byte[] bytearray = new byte[512];
int len = 0;
FileInputStream input = null;
FileOutputStream output = null;
try{
input=new FileInputStream(new File("file2copy.txt"));
output=new FileOutputStream(new File("destination.txt"));
while((len = input.read(bytearray)) != -1){
output.write(bytearray, 0, len);
}
}catch(FileNotFoundException fnfe){
//Hmm, filen finns inte!? Fel sökväg? Eller har den blivit borttagen?
}catch(IOException ioe){
//Här kan man hantera IOException istället för att direkt gå på ett generellt
//Exception, beror givetvis på vad man ska göra men det känns vitalt.
}catch(Exception e){
//Shit, det small!! OCH det var inget jag fångat upp innan!!!
// Obra, men vi kan hantera det iaf.
}finally{
//Här stänger vi input och output oavsätt om det small tidigare
// Under förutsättning att vi lyckats initierat våra stömmar.
if(input!=null){try{input.close();}catch(Exception ex){ex.printStackTrace();}}
if(output!=null){try{output.close();}catch(Exception ex){ex.printStackTrace();}}
}
Hoppas du var med på skillnaden.
Sv: Är det smart att alltid avsluta sista catch-blocket i ett try-block med Exce
Tack Peter för ditt tillägg, mycket viktig och bra info.
och du är inte petig utan noggrann heter det.
//Jonas