Java-språket gir unntak modellen slik at utviklere kan håndtere situasjoner der normal kjøringen av programmet går galt . Det er mange måter et program kan ta en uventet vending , men noen generelle typer aktivitet er utsatt for slike situasjoner , for eksempel input /output , behandling med matriser og noen aritmetiske beregninger. Å ha en forståelse av hvordan å håndtere unntak i Java- programmer er en av de viktigste ferdigheter involvert i å bli en utvikler . Instruksjoner
en
Lag din Java-program, med følgende disposisjon som klassen din og viktigste metoden : en
import java.io. * ;
public class ExceptionDemo {
public static void main ( String [] args ) {
FileWriter fileOut = ny FileWriter ( " outputfile.txt ");
PrintWriter utskriften = new PrintWriter ( fileOut ) ;
printOut.println ( "Tekst som skrives ut til fil ");
printOut.close ();
fileOut.close ();
< p > } }
p Hvis du limer inn denne koden på en IDE (Integrated Development Environment) som fremhever koden feil , vil du se at det ikke vil selv være i stand til å kompilere fordi det er en " ubehandlet unntak . " Den FileWriter konstruktør-metoden kan kaste et unntak , for eksempel hvis filen du har angitt finnes ikke
2
Plasser koden med ubehandlet unntak i en "prøve" blokk som følger: .
prøve {
FileWriter fileOut = ny FileWriter ( " outputfile.txt ");
PrintWriter utskriften = ny PrintWriter ( fileOut ) ;
printOut.println ( " tekst som skrives ut til fil ");
printOut.close ();
fileOut.close ();
}
p Dette skal hindre at kompilatoren fra klager over de linjene som var årsaken ubehandlet unntak feil , men vil skape en ny type feil fordi " prøve" statement er ennå ikke fullført. Den " prøve" statement er i utgangspunktet en container for kode som kan kaste et unntak , men du har fortsatt å si hva som skal skje hvis et unntak er faktisk kastet .
3
Sett inn en " fange "statement som følger ( etter stengetid " prøve " brakett) : en
fangst ( IOException IOE ) {
System.err.println ( " IOException har oppstått : "+ ioe.getMessage ( ));
}
p Dette bør være nok til å holde kompilatoren glad, og vil tillate deg å kjøre programmet . Men er alt du har gjort hindre at programmet krasjer hvis et unntak på dette punktet . Avhengig av opplysningene i søknaden din , kan det være lurt å sette inn annen kode her for å reflektere hva som er i "prøve" blokk, som at koden ikke skal ha blitt henrettet. Så snart unntak blir kastet , vil utførelsen hoppe rett til " catch " -kode.
4
Legg til flere unntaksbehandlerne . Avhengig av art av programmet, kan det være lurt å inkludere ulike koder for bestemte typer unntak. For eksempel , før " IOException " handler kan du inkludere : en
fangst ( FileNotFoundException fnfe ) {
System.err.println ( " FileNotFoundException har oppstått : " + fnfe.getMessage ( ) ) ;
}
p Dette er en mer spesifikk type feil enn den IOException , så hvis unntaket kastes er ikke et FileNotFoundException , vil koden hoppe til det mer generelle IOException handler i stedet. Chaining dine unntaksbehandlerne på denne måten kan du diktere nøyaktig hva som skal skje for hver type feil .