Avatar billede madsokist Nybegynder
19. september 2002 - 12:22 Der er 3 kommentarer og
2 løsninger

Exceptions

eksempel :

Hvis du konverterer en String til en int vhja. Integer.parseInt(String) - risikerer du at der bliver kastet en exception. Den kan du fange i en try blok.

Hvis du selv extender klassen Exception f.eks.

class MyException extends Exception{
    public MyException() { }
    public MyException( String what ) {
        super( what );
    }
}

og kaster den i en given funktion :

public void testException() throws MyException {
throw new MyException(">>> Fejl 28, Dum bruger ikke kompaibel med intelligent software - udskift bruger ");
}

vil den kode jeg bruger funktionen i - ikke kompileres hvis jeg ikke fanger den exception. Det kan jeg da godt gøre med f.eks. Integer.parseInt der også smider en exception ...

Hvordan dog det :-)

er der en der kan give mig en forklaring? - jeg er bare nysgerrig
Avatar billede dsj Nybegynder
19. september 2002 - 12:44 #1
Dit spørgsmål er lidt vagt, men en exception skal ALTIC catches om du selv smider den eller ej.
Avatar billede madsokist Nybegynder
19. september 2002 - 13:00 #2
Hmmm - jeg har ingen problemer med at compile nedenstående - uden en try blok omkring.

int myInt = Integer.parseInt(myString);

og Integer.parseInt kaster en NumberFormatException
Avatar billede jakoba Nybegynder
19. september 2002 - 13:27 #3
Og det er så undtagelsen der bekræfter reglen. den slags 'core'-exeptions bliver pr default fanget når programmet dør. Så hvis den bliver kastet sstopper programmet. det kan du så undgå ved selv at fange den tidligere og håndtere fejlen.
Avatar billede carstenknudsen Nybegynder
19. september 2002 - 13:28 #4
Du skal fange din egen exception fordi den er en
såkaldt "checked exception". Integer.parseInt kaster
en "unchecked exception", derfor behøver du ikke
at fange denne. Checked exceptions er som regel nogle
som du bør forvente kan blive kastet, derfor skal
de fanges. Unchecked exceptions er f.eks. alvorlige
fejl som det ikke forventes at du kan gøre noget
ved og derfor ikke skal fange.
Avatar billede soelvpil Nybegynder
19. september 2002 - 17:29 #5
unchecked exceptions er underklasser af den Exception der hedder RuntimeException.

Så hvis man er interesseret i at kaste exceptions uden at være tvunget til at catche nogen steder, så:

class MyException extends RuntimeException{
    public MyException() { }
    public MyException( String what ) {
        super( what );
    }
}

Så det er absolut muligt. Det betragtes af de fleste som dårligt design, og jeg er helt enig, men i sidste instans er det vel et spørgsmål om smag og behag.
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