KomputilojProgramado

Java: esceptoj kaj ilia uzado

Ajna programo funkcios stabile nur se la fontkodo estas elpurigita, kaj ne estas kondiĉoj, kiuj povas doni neantaŭviditajn situacioj. La procezo de kaptado ebla malsukcesoj efektivigas en la programado scenejo. Por fari tion, la ellaboranto enkalkulas ĉiujn atendata rezultoj kaj provas limigi la efikon de la eraro tiel ke ĝi ne povis malhelpi la funkciadon de la programo, aŭ konduki al ĝia disfalo.

Kiam vi eble bezonos escepto uzado

En Java, escepto povas esti kaŭzita de malĝusta uzanto enigo, neniu bezono por rimedo aŭ subita reto desconexión programo. Por komforta uzo kreitaj de la desarrolladores de aplikoj, vi devas kontroli la aperon de kriz situacioj. La konsumanto devas ne devas atendi forlasi aplikon, por perdi datumoj rezulte de pluaj escepto, aŭ nur parto de mesaĝo aperas deklarante ke io iris malbone.

Handling Java esceptoj

Kion konsideri? La Java lingvo havas propran korpigita escepto uzado funkciojn. Kompreneble, granda procento de eraro estas kaptita de alia kompilo stadio, la sistemo aŭtomate sciigi ke uzon ĝi ne plu eblas. Sed estas ĉi tiu speco de escepto kiu okazas en tempo de ekzekuto. La ellaboranto devus povi anticipi ĝin kaj desegni la kodo por ke ĝi ne kaŭzus eraron, kaj pritraktis ĝin en speciala maniero kaj transdonita kontrolon al alia branĉo.

En Java, tio postulas la kompililon por kapti escepton, do la tipan problemoj estas konataj kaj havas norma ekzerco ŝablonoj.

tipa forigoj

La plej simpla ekzemplo, en kiu vi povas akiri escepton - tiu divido. Malgraŭ ĝia simpleco, en terminoj kiel dividanton, eble estas nulo, kio rezultos en eraro. Nu, se eblas antaŭdiri la apero de la pasinteco kaj malhelpi. Sed ĉi opcio ne ĉiam disponebla, do kaptante la escepton devus esti organizita rekte en la okazaĵo de "dividi per nulo".

La Java mekanismo por kapti prilaborado eraro aspektas tiel:

  • amason escepto objekto estas kreita, tiel kiel iu ajn alia;
  • la natura kurso de la programo interrompas;
  • ekskludo mekanismo provas trovi alternativan vojon por daŭrigi la kodo;
  • Trovu sekuran ekzekuton de la programo en la procesoro, laboro aŭ restarigitaj, aŭ okazos efektivigo de escepto en speciala maniero.

La plej simpla ekzemplo de kreado eraro povus aspekti tiel:

se (a == null)

ĵeti nova NullPointerException ();

Ĉi tie, la variablo a estas markita ĉe inicialización, kio estas, ne ĉu la referenco al nula objekto. Se ĉi tiu situacio ŝprucis kaj bezonas specialan uzado, escepto estas ĵetita de ĵeto nova NullPointerException ().

Malmultaj detaloj pri ŝlosilvortoj

Kiam kontraktanta kun esceptoj estas ofte necesa por uzi la ŝlosilvorto Java por rilati al specifa ago. Tiu lingvo de ilia kvin programado:

  • Provu. Tiu ŝlosilvorto estas jam renkontis, kaj tio signifas transiron en sekcio de kodo kiu povas ĵeti escepton. Bloko limigita krampoj {}.
  • Catch. Ĝi interkaptas la deziratan escepto tipo kaj manipuli ĝin taŭge.
  • Fine. Tiu ŝlosilvorto estas nedeviga kaj estas uzataj por plenumi certan pecon de kodo, kiu estas bezonata ĉiuokaze, eĉ se neniu escepto ne kaptita. Aldonita rekte post provo bloko.
  • Ĵetu - permesas krei Java esceptoj de ie ajn.
  • Ĵetoj - ŝlosilvorto kiu lokas en la metodo subskribo. Tio signifas, ke la sekva kodo povas ĵeti escepton de tiu tipo Java. Ĉi tiu marko servas kiel signalo al programistoj kiuj bezonas konsideri - la metodo ne funkcios kiel atendita de li.

Kaptante per provo

Ĵeto por Java esceptoj, nature supozas ke estos manipulita en speciala maniero. La plej oportuna maniero fari ĝin, se la kodo sekcio estas skermis for en bloko. Kiu povas enhavi escepto. Kiam vi kuros ĉi tiu kodo, la virtuala maŝino trovos neatenditan situacion, kompreni ke ekzistas kritika bloko kaj translokigoj kontroli al la stacio kun la prilaborado.

La Java kodo estas envolvita en specialan bloko provo, ene, kiu eble estas escepto. Tiel, ĝi metis plurajn neantaŭviditajn situacioj kiuj estos kaptita en la sama loko, ne raspolzayas kodo.

La plej tipa kodo por la prilaborado unuo estas la jena:

provu {

// Ĉi tie estas iom da kodo kiu povas generi escepton

} Catch (Tip_isklyucheniya_1 identifikator_1) {

// Ĉi tie ekzistas escepto uzado, laŭ lia tipo kaj kondiĉoj;

} Catch (Tip_isklyucheniya_2 identifikator_2) {

// Ĉi tie ekzistas escepto uzado, laŭ lia tipo kaj kondiĉoj;

}

Temo kaptaĵo raportas, ke kodo, kaj skani ĝin escepton, por esti traktita kiel priskribita sube, kondiĉe ke ĝi plenumas kun lia tipo. La identificador povas uzi en procesante la kodo bloko kiel argumentoj.

fine

Kiel evidentiĝis el la antaŭa ĉapitro, kaptaĵo blokas kapti esceptoj kaj procesi ilin. Sed tre ofte la situacio ekestas kie devus kuri iun kodon, sendepende de ĉu ili estis kaptitaj eraroj. Pro tio ekzistas la ŝlosilvorto fine. Ĝi estas uzata por pliigi la valorojn de la diversaj nombriloj, fermante dosierojn aŭ rilatoj de reto.

Tiu komploto prezentas plurajn kaptaĵo blokas inventita metodoj kapti esceptoj. Ekzemple, la kodo enhavas la provon generas neatendita situacio, kiel Malvarma. Tiam, la konzolo estos montrata esprimo «malvarmumis!» Kaj «Ĉu tiu ion por gajigi pri?». Tio estas, la fine bloko estas efektivigita ĉiuokaze.

Fakte, manieron por eviti deĉenigi fine tie. Ĝi estas konektita kun la kompletigo de la virtuala maŝino. Trovu kiel apliki ĝin, eblas en Interreto stratoj.

ĵeti ŝlosilvorto

Ĵeto generas escepto. Lia sintakso estas la jena:

ĵeti nova NewException ();

Tie estas kreita nova escepto al la tipon NewException (). Kiel tipo povas esti uzata jam inkludita en la normo Java biblioteko klasoj kaj antaŭe difinita de la ellaboranto de lia propra produktado.

Tiu dezajno estas parto de la priskribo de iu ajn metodo, kiun la voko devus tiam okazi ene de la provo bloko, por povi kapti ĝin.

Temo ĵetas

Kio se en la procezo de disvolviĝo de situacio kie la metodo povas ĵeti escepton, sed ne povas pritrakti konvene. Tiucele en la metodo subskribo specifas la vorto ĵetas kaj tipon de eblaj esceptoj.

Tiu etikedo estas speco de indikilo por kliento programistoj ke la metodo ne povas pritrakti ilian sama escepto. Krome, se la eraro tipo estas markita, tiam la tradukilo devigos eksplicite peti ĝin.

Provu rimedoj

La Java versio 7 programistoj inkluzivis grava novigado, kiel kuracado provo bloko kun rimedoj.

Multaj objektoj estas kreitaj en Java, post uzo devus esti fermita malsupren por konservi rimedoj. Antaŭe ĝi devis preni ĉi konsideri kaj haltigi tiujn okazojn permane. Nun tamen ili aperis AutoClosable interfaco. Ĝi helpas por aŭtomate fermi jam uzita objektoj metitaj en provo bloko. Tra tiu alproksimiĝo ĝi iĝis pli oportuna por skribi kodon en lia legado estas signife pliigita.

Propraj klasoj Java esceptoj

La kreintoj de la priskribita programlingvo prenis en rakontas multajn aspektojn de la dezajno specoj de krizoj. Tamen, ĉiuj la elektoj malhelpi la rezulto de eventoj ne funkcios, do en Java implementado la kapablo difini sian propran esceptoj, estas konvena al la bezonoj de la aparta kodo.

La plej simpla maniero por krei - heredi de la plej taŭga por la objekto kunteksto.

Trovigxis heredi de Escepto, la klaso kiu estas uzata por difini vian propran esceptoj. En MyException havas du constructores - aprioran, la dua - kun la argumento msg tipo String.

Tiam, en la publika klasĉambro FullConstructors implementado metodo f, kiu enhavas la subskribon ĵetas MyException. Tiu ŝlosilvorto signifas ke f povas ĵeti kiel Java MyException escepto. Plue, en la metodo korpo produktas tekston informo produktadon al la konzolo mem kaj la reala generacio MyException per ĵeto.

La dua metodo estas iomete malsama de la unua, ke kiam vi kreas escepton, oni pasis kordo parametron, kiu reflektos en la konzolo ĉe kaptado. En la ĉefa estas klare, ke f () kaj g () metas en provo kontrolanta kaj ŝlosilvorto kaptaĵo agordita por kapti MyException. La rezulto de prilaborado estas montri eraro mesaĝon al la konzolo:

Ĝi tiel alvenis al adicii Java esceptoj, per sia propra mano.

arkitekturo esceptoj

Kiel kun ĉiuj objektoj en Java, esceptoj ankaŭ heredis kaj havas hierarkian strukturon. La radika elemento de ĉiuj eraroj ĵetita en ĉi tiu programlingvo estas klaso java.lang.Throwable. Heredis de li du specoj - Eraro kaj Escepto.

Eraro - signalas la kritika eraro kaj estas senbrida Java esceptoj. Intercepción kaj prilaborado tiaj datumoj plejparte okazas en la dezajno stadio kaj ne bezonas enkonduki en la fina aplikon kodo.

La plej kutime uzita klaso por krei kaj analizante la esceptoj estas Escepto. Kiu, siavice, estas dividita en plurajn branĉojn, inkluzive RuntimeException. Per RuntimeException estas runtime esceptoj, tio estas, okazas dum la programo. Ĉiuj klasoj derivita de ĝi estas nekontrolebla.

Ofte estas esceptoj

En Java esceptoj, la listo de kiu estas prezentita sube, estas uzataj plej ofte, do vi devus priskribi ĉiun el ili detale:

  • ArithmeticException. Tiuj inkludas eraroj asociitaj kun aritmetikaj operacioj. La plej evidenta ekzemplo - la divido per nulo.
  • ArrayIndexOutOfBoundsException - alvokon al la tabelo elemento nombro, kiu superas la tutan de lia longitudo.
  • ArrayStoreException - provo atribui nekongrua elemento tipo de la tabelo.
  • ClassCastException - provo alporti la malĝusta unu tipo al alia.
  • IllegalArgumentException - uzante la malĝusta argumento en la metodo alvoko.
  • NegativeArraySizeException - escepto kiam vi kreas tabelon de negativa grandeco.
  • NullPointerException - misuzo de referencoj al nula.
  • NumberFormatException - okazas kiam malĝustan ŝnuron konvertiĝo al entjera.
  • UnsupportedOperationException - operacio ne estas subtenata.

Ĉi tiuj ekzemploj reprezentas la tipojn de senbrida Java esceptoj. Sed tiel aspektas kontrolis:

  • ClassNotFoundException - Klaso ne trovita.
  • IllegalAcccessException - restrikti la aliron al la klaso.
  • InterruptedException - ĉesigo de la fluo.
  • NoSuchFieldException - ne estas postulita kampon.

La lego de la esceptoj

Parolante pri ofte renkontis esceptoj Ni notu, ke ilia interpreto en la dezajno, povas percepti malĝuste. Sekva estas mallonga listo klarigante en pli detalo, kie povas esti neatendita situacio.

NullPointerException. La unua kazo kiam estas escepto, estas pledi al referenco al objekto kiu estas egala al nula. Ĝi ankaŭ etendas al la nulo klaso Ekzemple metodoj. NullPointerException povas esti ĵetita en la kazo de akiri egalan longon nula tabelo. Por eviti tiajn situaciojn estos periode kontroli ejoj sur la nula.

ArrayIndexOutOfBoundsException. Ajna programo povas ekzisti sen la uzo de tabeloj. Laŭe, la oftaj rimedo al ĝi povas generi kaj eraro. Escepto okazas kiam ellaboranto provas aliri tabelo elemento kiu ne estas en la indekso listo. Ekzemple, la petita valoro estas super aŭ sub nulo longo. Tre ofte estas rezulto de la fakto ke en la tabelo komencas kun poentaro de nulo.

trovoj

Handling Java esceptoj - potenca ilo medio, kio ege faciligas la laboron de la programisto kaj permesas lin krei puran kaj carente de kodo eraroj. Pri kiel glata kaj stabilan funkciadon aplikon dependas de la statuso kaj reputacio de la ellaboranto.

Kompreneble, en pli malpli simplaj programoj spuri nenormalaj situacioj multe pli facila. Sed en grandaj aŭtomatigitaj kompleksoj dum kelkaj cent mil linioj eblas nur rezulte de longtempa testado kaj depuración.

Por Java escepto eraro de kiu ekesti en iuj aplikoj, kelkaj firmaoj proponas rekompencon kiam trovas entuziasmuloj. Precipe estimita de tiuj kiuj kaŭzas malobservon de la sekureca politiko programaro.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 eo.delachieve.com. Theme powered by WordPress.