19. september 2002 - 12:22Der 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
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.
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.
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.
Synes godt om
Ny brugerNybegynder
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.