Rekenaars, Programmering
Java: uitsonderings en hul hantering
Enige program sal stabiel werk net as die bron-kode is ontfout, en daar is geen voorwaardes wat onvoorsiene situasies kan veroorsaak. Die proses van die vang van moontlike mislukkings is uit op die ontwikkeling stadium gedra. Om dit te doen, die ontwikkelaar in ag neem al die verwagte uitkomste en poog om die effek van die fout te beperk sodat dit nie kan inmeng met die werking van die program, of lei tot sy val.
Wanneer jy dalk nodig het om uitsonderings te hanteer
In Java, kan 'n uitsondering word veroorsaak deur verkeerde toevoer van die gebruiker, geen behoefte aan 'n hulpbron of skielike netwerk afsluiting program. Vir 'n gemaklike gebruik geskep deur die program ontwikkelaar, moet jy die voorkoms van noodsituasies te beheer. Die verbruiker moet nie te wag om 'n aansoek te hou, om data te verloor as gevolg van 'n verwerkte uitsondering, of net 'n deel van 'n boodskap verskyn wat aandui dat iets verkeerd geloop het.
Hantering Java uitsonderings
Wat om te oorweeg? Die Java taal het sy eie ingeboude hantering van uitsonderings funksionaliteit. Natuurlik, is 'n groot persentasie van die fout gevang deur 'n ander samestelling stadium, sal die stelsel outomaties dat gebruik dit nie meer moontlik in kennis te stel. Maar daar is hierdie soort uitsondering wat plaasvind tydens looptyd. Die ontwikkelaar moet in staat wees om dit te antisipeer en om die kode te ontwerp sodat dit nie 'n fout het veroorsaak, en hanteer dit in 'n spesiale manier en oorhandig beheer na 'n ander tak.
In Java, is dit wat deur die samesteller 'n uitsondering te vang, sodat die tipiese probleme is bekend en het 'n standaard oefening patrone.
tipiese uitsluitings
Die eenvoudigste voorbeeld, waarin jy 'n uitsondering kan kry - hierdie afdeling. Ten spyte van sy eenvoud, in terme as 'n deler, kan nul wees, wat sal lei tot 'n fout. Wel, as dit moontlik is om die opkoms van die verlede te voorspel en te voorkom. Maar hierdie opsie is nie altyd beskikbaar is nie, sodat die uitsondering vang moet direk in die geval van "verdeel deur nul" georganiseer.
Die Java meganisme om die verwerking fout onderskep lyk soos volg:
- hoop uitsondering voorwerp geskep word, sowel as enige ander;
- die natuurlike verloop van die program is onderbreek;
- uitsluiting meganisme is besig om 'n alternatiewe manier om die kode voort te vind;
- Vind 'n veilige uitvoering van die program in die verwerker, werk of herstel, of sal verwesenliking van uitsondering voorkom in 'n spesiale manier.
Die eenvoudigste voorbeeld van die skep van 'n fout kan soos volg lyk:
indien (a == null)
gooi nuwe NullPointerException ();
Hier is die veranderlike 'n bewys by inisialisering, dit wil sê, is nie of die verwysing na 'n nul voorwerp. As hierdie situasie ontstaan het en nodig het spesiale hantering, is 'n uitsondering gegooi deur 'n gooi nuwe NullPointerException ().
Min besonderhede oor sleutelwoorde
Wanneer die hantering van uitsonderings is dikwels nodig om die navraag Java gebruik om te verwys na 'n spesifieke aksie. Hierdie taal van hul vyf programme:
- Probeer. Hierdie navraag is reeds vergader, en dit beteken 'n oorgang na 'n artikel van kode wat 'n uitsondering kan gooi. Blok beperkte draadjies {}.
- Vangs. Dit sny die gewenste tipe uitsondering en hanteer dit gepas.
- Ten slotte. Hierdie navraag is opsioneel en word gebruik om 'n sekere stuk kode, wat in elk geval nodig is uit te voer, selfs al is geen uitsondering nie gevang word. direk bygevoeg nadat drie blok.
- Gooi - kan jy Java uitsonderings skep van oral.
- Gooi - 'n term wat geplaas word in die handtekening metode. Dit beteken dat die volgende kode uitsondering van hierdie tipe Java kan gooi. Hierdie punt dien as 'n sein aan ontwikkelaars wat nodig het om in gedagte gehou word - die metode kan nie werk soos verwag van hom.
Vang met 'n drie
Vrylating te Java uitsonderings, veronderstel natuurlik dat dit in 'n spesiale manier hanteer sal word. Die mees geskikte manier om dit te doen, indien die kode afdeling is afgekamp in 'n blok. Wat kan 'n uitsondering bevat. Wanneer jy hierdie kode uit te voer, sal die virtuele masjien 'n onverwagte situasie te vind, te verstaan dat daar 'n kritieke blok en oordragte beheer na die stasie met die verwerking.
Die Java-kode is toegedraai in 'n spesiale blok probeer, waarbinne 'n uitsondering mag wees. So, geplaas hy verskeie onvoorsiene situasies wat sal gevang word in die dieselfde plek, nie raspolzayas kode.
Die mees tipiese kode vir die verwerking van eenheid is soos volg:
probeer {
// Hier is 'n paar kode wat 'n uitsondering kan genereer
} Vangs (Tip_isklyucheniya_1 identifikator_1) {
// Hier is daar uitsonderings te hanteer, volgens sy soort en voorwaardes;
} Vangs (Tip_isklyucheniya_2 identifikator_2) {
// Hier is daar uitsonderings te hanteer, volgens sy soort en voorwaardes;
}
Navraag vangs verslae wat kode, en scan dit vir 'n uitsondering, te behandel soos hieronder beskryf, met dien verstande dat dit voldoen aan die tipe. Die identifiseerder kan gebruik word in die verwerking van die kode blok as argumente.
uiteindelik
As dit uit die vorige hoofstuk duidelik geword, vang blokke te vang uitsonderings en hulle verwerk. Maar baie dikwels die situasie ontstaan waar moet 'n paar kode hardloop, ongeag of hulle gevang foute. Want dit is daar die navraag uiteindelik. Dit word gebruik om die waardes van die verskillende tellers te verhoog, die sluiting van lêers of netwerk verbindings.
Hierdie plot bied verskeie vangs blokke uitgevind metodes vang uitsonderings. Byvoorbeeld, die kode vervat in die drie genereer 'n onverwagte situasie soos Cold. Dan sal die konsole vertoon uitdrukking «Vasgevang koue!» En «Is dit iets om oor opgewonde?». Dit wil sê, die uiteindelik blok uitgevoer in elk geval.
Trouens, 'n manier om te verhoed dat verwek uiteindelik daar. Dit is wat verband hou met die voltooiing van die virtuele masjien. Vind hoe om dit te implementeer, is dit moontlik op die Internet oop ruimtes.
gooi navraag
Gooi genereer 'n uitsondering nie. Sy sintaksis is soos volg:
gooi nuwe NewException ();
Daar is 'n nuwe uitsondering op die tipe NewException (). As 'n soort gebruik kan word is reeds ingesluit in die standaard Java biblioteek klasse en voorheen gedefinieer deur die ontwikkelaar van sy eie produksie.
Hierdie ontwerp is deel van die beskrywing van enige metode, wat die oproep dan moet plaasvind binne die drie blok, in staat te wees om dit te onderskep.
navraag gooi
Wat gebeur as in die proses van ontwikkeling van 'n situasie waar die metode 'n uitsondering kan gooi, maar is nie in staat om behoorlik te hanteer. Vir hierdie doel, in die handtekening metode spesifiseer die woord gooi en tipe moontlik uitsonderings.
Hierdie etiket is 'n soort van aanwyser vir kliënt-ontwikkelaars wat die metode is nie in staat om hul dieselfde uitsondering hanteer. Verder, as die tipe fout is nagegaan, dan is die samesteller sal uitdruklik dwing vra vir dit.
Probeer om hulpbronne
Die Java weergawe 7 ontwikkelaars het 'n groot innovasie, as 'n behandeling probeer blok met hulpbronne ingesluit.
Baie voorwerpe geskep in Java, na gebruik moet word gesluit om hulpbronne te bewaar. Voorheen moes dit in aanmerking neem en hierdie gevalle hand stop. Nou, egter, verskyn hulle AutoClosable koppelvlak. Dit help om al gebruik voorwerpe geplaas in 'n drie blok outomaties toemaak. Deur middel van hierdie benadering is dit meer gerieflik geword het om kode te skryf in sy leesbaarheid aansienlik verhoog.
Eie klasse Java uitsonderings
Die skeppers van die beskryf programmeertaal in ag geneem het baie aspekte van die tipes ontwerp van noodgevalle. Maar al die opsies om te verhoed dat die uitkoms van die gebeure sal nie werk nie, so in Java die vermoë om hul eie uitsonderings definieer geïmplementeer word, is dit gepas om die behoeftes van die spesifieke kode.
Die eenvoudigste manier om te skep - om te erf van die mees geskikte om die voorwerp konteks.
Daar was by erf Uitsondering, die klas wat gebruik word om jou eie uitsonderings definieer. In MyException het twee konstruktors - 'n verstek, die tweede - met die argument msg tipe String.
Dan, in die openbare klaskamer FullConstructors geïmplementeer metode f, wat die handtekening bevat gooi MyException. Hierdie navraag beteken dat f kan gooi soos Java MyException uitsondering nie. Verdere, in die metode liggaam geproduseer teksinligting uitset na die konsole self en die werklike geslag MyException, deur gooi.
Die tweede metode is 'n bietjie anders as die eerste een wat wanneer jy 'n uitsondering maak, is dit verby 'n string parameter, wat sal weerspieël word in die konsole te vang. In die hoof, is dit duidelik dat f () en g () is in 'n drie nagaan geplaas en navraag vangs ingestel om MyException vang. Die resultaat van verwerking is 'n fout boodskap aan die konsole te vertoon:
So dit kom by Java uitsonderings voeg, deur sy eie hand.
argitektuur uitsonderings
Soos met al die voorwerpe in Java, is uitsonderings ook geërf en het 'n hiërargiese struktuur. Die wortel element van alle foute gegooi in hierdie programmeertaal is klas java.lang.Throwable. Geërf het van hom twee soorte - Fout en uitsondering nie.
Fout - seine die kritieke fout en is afgeskakel Java uitsonderings. Onderskepping en verwerking van sodanige data in die meeste gevalle kom by die ontwerp stadium en nie in die behoefte van die bekendstelling in die finale aansoek kode.
Die mees algemeen gebruikte klas vir die skep en die ontleding van die uitsonderings is uitsondering nie. Wat op sy beurt, is verdeel in verskeie takke, insluitend RuntimeException. Deur RuntimeException is runtime uitsonderings, dit wil sê, wat gedurende die program. Alle klasse afgelei van dit is te bewys.
Dikwels is daar uitsonderings
In Java uitsonderings, is die lys van wat hieronder aangebied word meestal gebruik, sodat jy elkeen van hulle in detail moet beskryf:
- ArithmeticException. Dit sluit foute wat verband hou met rekenkundige operasies. Die mees flagrante voorbeeld - die deling deur nul.
- ArrayIndexOutOfBoundsException - 'n beroep op die skikking element nommer wat die totaal van sy lengte oorskry.
- ArrayStoreException - poging om 'n onversoenbare element tipe van die skikking te wys.
- ClassCastException - 'n poging om die verkeerde een tipe na 'n ander te bring.
- IllegalArgumentException - met behulp van die verkeerde argument in die metode oproep.
- NegativeArraySizeException - 'n uitsondering wanneer jy 'n verskeidenheid van negatiewe grootte te skep.
- NullPointerException - misbruik van verwysings na nul.
- NumberFormatException - vind plaas wanneer 'n verkeerde string omskakeling na heelgetal.
- UnsupportedOperationException - operasie word nie ondersteun nie.
Hierdie voorbeelde verteenwoordig die tipes ongehinderd Java uitsonderings. Maar so kyk nagegaan:
- ClassNotFoundException - Klas nie gevind word nie.
- IllegalAcccessException - beperk toegang tot die klas.
- InterruptedException - onderbreking van die vloei.
- NoSuchFieldException - daar is geen vereiste veld.
Die interpretasie van die uitsonderings
Praat van dikwels teëgekom uitsonderings moet kennis geneem word dat die interpretasie daarvan in die ontwerp, kan verkeerdelik beskou word. Volgende is 'n kort lys verduidelik in meer detail, waar daar 'n onverwagte situasie kan wees.
NullPointerException. Die heel eerste geval wanneer daar is 'n uitsondering, is om 'n beroep op 'n verwysing na 'n voorwerp wat gelyk is aan nul is. Dit geld ook vir die zero klas byvoorbeeld metodes. NullPointerException kan gegooi word in die geval van die verkryging van 'n gelyke lengte nul skikking. Om sulke situasies te vermy sal gereeld te monitor webwerwe op die nul.
ArrayIndexOutOfBoundsException. Enige program kan nie bestaan sonder die gebruik van skikkings. Gevolglik kan die gereelde beroep op dit genereer en fout. Uitsondering vind plaas wanneer 'n ontwikkelaar probeer om toegang te verkry tot 'n skikking element wat nie in die indeks lys. Byvoorbeeld, die versoek waarde is bo of onder vriespunt lengte. Heel dikwels is 'n gevolg van die feit dat in die skikking begin met 'n telling van nul.
bevindings
Hantering Java uitsonderings - 'n kragtige instrument omgewing, wat grootliks vergemaklik die werk van die programmeerder en hom toelaat om 'n skoon en sonder kode foute te skep. Oor hoe glad en stabiele funksionering aansoek hang af van die status en reputasie van die ontwikkelaar.
Natuurlik, in 'n min of meer eenvoudige programme te abnormale situasies baie makliker op te spoor. Maar in 'n groot outomatiese komplekse vir 'n paar honderd duisend lyne is dit slegs moontlik as gevolg van langtermyn-toetsing en ontfouting.
Vir Java uitsondering fout waaruit ontstaan in 'n paar programme, sommige maatskappye bied 'n beloning wanneer hulle entoesiaste vind. Veral waardeer deur diegene wat 'n skending van die veiligheidsbeleid sagteware veroorsaak.
Similar articles
Trending Now