Exception Handling

18
Exception Handling Kapitel 9

description

Exception Handling. Kapitel 9. Agenda. Exceptions try, throw and catch Skapa en egen exception-klass Multipla throw / catch Slänga vidare en exception Olika sorters exceptions För- och eftervillkor. try, throw and catch. Scanner kbd = new Scanner(System.in); try { int a = 5; - PowerPoint PPT Presentation

Transcript of Exception Handling

Page 1: Exception Handling

Exception Handling

Kapitel 9

Page 2: Exception Handling

Agenda

Exceptionstry, throw and catch

Skapa en egen exception-klassMultipla throw / catchSlänga vidare en exception Olika sorters exceptionsFör- och eftervillkor

Page 3: Exception Handling

try, throw and catchScanner kbd = new Scanner(System.in);try{

int a = 5;int b = kbd.nextInt();if(b == 0)throw new Exception("Kan inte dela med noll!");elseSystem.out.println("a / b = " + a/b);

}catch(Exception e){

System.out.println(e.getMessage());}

Page 4: Exception Handling

try, throw and catch

Try-blocketInnehåller kod där nått kan gå snettOm det går snett så “kastar” (throw) vi en exception

Catch-blocketFångar “kastet”Nästan som en metod

Page 5: Exception Handling

Fördefinierade exception-klasser

FileNotFoundExceptionIOExceptionClassNotFoundExceptionNoSuchMethodException

Page 6: Exception Handling

Skapa en egen exception-klass

public class delamednoll extends Exception

{public delamednoll(String message){

super(message);}

}

Page 7: Exception Handling

Skapa en egen exception-klass

Scanner kbd = new Scanner(System.in);try{

int a = 5;int b = kbd.nextInt();if(b == 0)

throw new delamednoll("Kan inte dela med noll!!!");elseSystem.out.println("a / b = " + a/b);

}catch(delamednoll e){

System.out.println(e.getMessage());}

Page 8: Exception Handling

Multipla throw/catchtry{

int b = kbd.nextInt();if(b == 0)

throw new delamednoll("Hej 1");else if(b < 0)

throw new negativtal("Hej 2");}catch(delamednoll e){

System.out.println(e.getMessage());}catch(negativtal e){

System.out.println(e.getMessage());}

Page 9: Exception Handling

Slänga vidare en exception

public static void main(String[ ] args){

Scanner kbd = new Scanner(System.in);try{

int a = 5, b = kbd.nextInt();int c = dela(a,b);System.out.println(c);

}catch(delamednoll e){

System.out.println(e.getMessage());}

}

Page 10: Exception Handling

Slänga vidare en exception

public static int dela(int a, int b) throws delamednoll

{if(b == 0)

throw new delamednoll("Inte bra!");return a/b;

}

Page 11: Exception Handling

Olika sorters exceptions

Checked exceptionMåste tas omhand i ett catch-block (eller throws)

Unchecked exceptionBehöver inte tas omhand i ett catch-blockArray index out of boundsDivision med noll Avslutar programmet

Page 12: Exception Handling

Olika sorters exceptions

Page 13: Exception Handling

Errors

Genereras vid onormala tillståndVad nu det betyder Out of memory

Behöver inte tas omhandSom unchecked

Page 14: Exception Handling

För- och eftervillkor

Förvillkor (pre)Vad som ska gälla innan metoden anropasOm det inte är uppfyllt är resultatet odefinierat

Eftervillkor (post)Vad som ska gälla när metoden är klarUnder förutsättning att förvillkoret var uppfyllt

Page 15: Exception Handling

Metod för division

//pre: nämnare != 0//post: kvoten mellan taljare och//namnare har returneratsdouble dividera(double taljare, double

namnare){

return taljare/namnare;}

Page 16: Exception Handling

Kontraktsprogrammering

taUtPengarpre: ut <= saldopost: saldo har minskats med ”ut” kronor

sattInPengarpre: in >= 0saldo har ökats med ”in” kronor

Page 17: Exception Handling

Summering

ExceptionsÄr ett objektSeparerar normalfallet från ovanliga falltry, throw and catch

Skapa en egen exception-klassMultipla throw / catchSlänga vidare en exception

throws

Page 18: Exception Handling

Summering

Olika sorters exceptionsCheckedUnchecked

ErrorKontraktsprogrammering

pre / post