Een uitzondering doet zich voor wanneer een abnormale situatie ( zoals een fout of probleem ) plaatsvindt die de methode niet kan verwerken . De methode exits door " het gooien van " een uitzondering , het communiceren naar de aanroepende functie die de methode abnormaal is afgelopen , en het passeren weer informatie over de voorwaarden van de situatie . Deze informatie wordt ingekapseld in de uitzondering object terug naar de belfunctie geworpen . Basic Uitzonderingen Java biedt drie basistypen van uitzonderingen : . Gecontroleerd uitzonderingen , fouten en runtime uitzonderingen Gecontroleerd uitzonderingen worden gegooid voor verwachte problemen die redelijkerwijs kan worden behandeld , zoals een verzoek voor een niet-bestaand bestand . Gecontroleerd uitzonderingen moeten worden gevangen en hetzij behandeld door de belfunctie of tot een hogere roeping functie gegooid . Deze eis wordt aangeduid als de ' Catch of opgeven Requirement . " Alle gecontroleerde uitzonderingen zijn afgeleid van de klasse Exception . Fouten worden gegenereerd wanneer een ernstige fout buiten de applicatie gebeurt dat niet redelijkerwijs kan worden behandeld , zoals uit het geheugen en stack overflow fouten . Alle fouten worden afgeleid van de klasse Error . Runtime uitzonderingen worden gegenereerd wanneer een ernstige fout in de applicatie gebeurt dat niet redelijkerwijs kan worden behandeld , zoals illegale argumenten en parameters . Alle runtime uitzonderingen zijn afgeleid van de RuntimeException klasse . Fouten en runtime uitzonderingen zijn beide aangevinkt uitzonderingen . Ongecontroleerde uitzonderingen zijn niet onderworpen aan de eis Catch of opgeven omdat sierlijke herstel van deze soorten uitzonderingen niet wordt verwacht . Klassen Exception , Error en RuntimeException zijn allemaal afgeleid van klasse Throwable . Van Throwable , deze klassen erven nuttige functies voor rapportage en debuggen fouten . Bijvoorbeeld , getMessage keert de voor mensen leesbare foutmelding in verband met de uitzondering , en printStackTrace drukt gedetailleerde informatie om een gespecificeerde stroom of schrijver . U kunt uw eigen gespecialiseerde uitzonderingen maken door erven van Exception , RuntimeException of hun subklassen . Specialty Uitzonderingen Java biedt tal uitzondering klassen afgeleid van de fundamentele klassen . Gespecialiseerde uitzonderingen kunnen extra functies bieden voor het ophalen van gedetailleerde informatie die specifiek zijn voor de situatie . Bijvoorbeeld , kan Java database connectivity functies een SQLException gooien . Deze gespecialiseerde uitzondering heeft functies voor het ophalen van informatie over de SQL-status en vendor - specifieke foutcode met betrekking tot de uitzondering . Vangen en hanteren van specifieke uitzonderingen hebt u toegang tot een schat aan aanvullende informatie niet beschikbaar indien u alleen vangen en omgaan met de algemene ouder- class uitzonderingen Handling Uitzonderingen : . Probeer , Catch , Eindelijk < br > Gebruik proberen , vangen , en tenslotte blokken te vangen en te behandelen uitzonderingen . Plaats uw code die een uitzondering in het blok try zou gooien . Zorg voor een catch-blok aan elke mogelijke uitzondering te behandelen , met instructies om de uitzondering op grond van de aard van de uitzondering en de informatie uitzondering voorziet verwerken . Omgaan met uitzondering kon betrekken waarmee de gebruiker van de fout , met het verzoek de juiste input van de gebruiker , automatisch herstellen van de fout of het gooien van een uitzondering op een hoger niveau . Code in het blok finally telkens uitvoert als het blok try wordt verlaten , of het verlaten normaal of een uitzondering werd betrapt . In dit eenvoudige voorbeeld , de toepassing probeert een bestand te openen en te verwerken . Als een uitzondering wordt gevangen , wordt enige uitzondering informatie afgedrukt , en de uitvoering verder . Ten slotte is de applicatie ruimt door het sluiten van het bestand stroom indien nodig FileReader fr = null ; . Try { fr = new FileReader ( " myfile.txt " ) ; ... ( code te lezen en verwerken van de file ) ... } catch ( FileNotFoundException ex ) { System.out.println ( ex.getMessage ( ) ) ;} catch ( IOException ex ) { System.out.println ( ex.getMessage ( ) ) ; } uiteindelijk { if ( fr = null ) fr.close ( ) ; ! } Throwing uitzonderingen uitzonderingen op een functie te gooien , geeft dit met behulp van de gooit clausule in de functie declaratie , het verstrekken van een lijst van uitzonderingen die kunnen worden gegooid . Bijvoorbeeld : leegte getData ( ) op Twitter gooit IOException , FileNotFoundException { Een uitzondering wordt gegenereerd met behulp van een " worp " statement . Een gevangen of gecreëerd uitzondering kan worden gegooid . Bijvoorbeeld : leegte getData ( ) op Twitter gooit SomeOtherException , FileNotFoundException { FileReader fr = null ; try { fr = new FileReader ( " myfile.txt " ) ; ... ( code te lezen en verwerken van de file ) ... } catch ( FileNotFoundException ex ) { gooien ex ; } catch ( IOException ex ) { throw new SomeOtherException ( ex ) ; } uiteindelijk {if ( ! fr = null ) fr.close ( ) ; } }
|