Exception Handling
Kapitel 9
Agenda
Exceptionstry, throw and catch
Skapa en egen exception-klassMultipla throw / catchSlänga vidare en exception Olika sorters exceptionsFör- och eftervillkor
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());}
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
Fördefinierade exception-klasser
FileNotFoundExceptionIOExceptionClassNotFoundExceptionNoSuchMethodException
Skapa en egen exception-klass
public class delamednoll extends Exception
{public delamednoll(String message){
super(message);}
}
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());}
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());}
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());}
}
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;
}
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
Olika sorters exceptions
Errors
Genereras vid onormala tillståndVad nu det betyder Out of memory
Behöver inte tas omhandSom unchecked
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
Metod för division
//pre: nämnare != 0//post: kvoten mellan taljare och//namnare har returneratsdouble dividera(double taljare, double
namnare){
return taljare/namnare;}
Kontraktsprogrammering
taUtPengarpre: ut <= saldopost: saldo har minskats med ”ut” kronor
sattInPengarpre: in >= 0saldo har ökats med ”in” kronor
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
Summering
Olika sorters exceptionsCheckedUnchecked
ErrorKontraktsprogrammering
pre / post
Top Related