KompiuteriaiProgramavimas

"Java": išimtys ir jų tvarkymas

Bet programa veiks stabiliai, tik jei kodas yra debugged, ir nėra sąlygų, kurios gali sukelti nenumatytų situacijų. Gaudyti galimus gedimus procesas atliekamas programavimo etape. Norėdami tai padaryti, kūrėjas atsižvelgiama į visų laukiamus rezultatus ir bando apriboti klaidą poveikį, kad jis negalėjo kištis programos veikimą arba sukelti jos žlugimo.

Kai jums gali prireikti išimties tvarkymą

Java, išimtis gali būti padaryta dėl netinkamo vartotojo įvestį, ne už ištekliaus ar staigaus tinklo atjungimo programos poreikį. Patogiam naudojimui sukurta paraiškos kūrėjas, turite kontroliuoti avarinių situacijų. Vartotojas neturėtų laukti mesti paraišką, prarasti duomenis kaip neapdirbtas, išskyrus, arba tiesiog dalyje pasirodo pranešimas, nurodantis, kad kažkas negerai rezultatas.

Tvarkymo Java išimtis

Ką apsvarstyti? Java kalba turi savo built-in išskyrus tvarkymo funkcionalumą. Žinoma, didelė dalis klaidų yra sugauti kitą rengimo etape, sistema automatiškai informuoja, kad naudoti tai nebėra įmanoma. Bet tai išimtis rūšies, kuri atsiranda vykdymo metu. Kūrėjas turėtų turėti galimybę numatyti, kad ir sukurti kodą, kad jis nesukėlė klaidą, ir tvarkomi ją ypatingu būdu ir perduoti kontrolės į kitą filialą.

Java, tai nustatytas sudarytojas sugauti išimtį, todėl tipiškų problemų yra žinomi ir turi standartinį pratybų modelius.

tipiniai išimtys

Paprasčiausias pavyzdys, kuriame jūs galite gauti išimtį - šį padalinį. Nepaisant savo paprastumo, kalbant, kaip dozatoriumi, gali būti nulis, kuris bus sukelti klaidų. Na, jei tai yra įmanoma prognozuoti praeities atsiradimą ir užkirsti kelią. Tačiau šis variantas ne visada yra prieinama, todėl gaudyti išimtis turėtų būti organizuojamas tiesiai į renginio "skaldyk iš nulio".

Java mechanizmas perimti apdorojimo klaida atrodo taip:

  • krūvos išimtis objektas yra sukurta, taip pat bet kuri kita;
  • natūralios programos yra nutraukiamas;
  • atskirtis mechanizmas bando rasti alternatyvų būdą tęsti kodą;
  • Rasti saugų vykdymą programą procesoriaus, darbo ar atkurtos, ar įvyks realizavimą, išskyrus specialiu būdu.

Paprasčiausias pavyzdys kuriant klaidą gali atrodyti taip:

jeigu (a == null)

mesti naują NullPointerException ();

Čia kintamasis A yra tikrinamas iniciacijos, ty yra ne tai, ar nuoroda į null objektą. Jei ši situacija kilo ir reikia specialaus apdorojimo, išimtis yra mestas mesti naują NullPointerException ().

Nedaug informacijos apie raktažodžius

Kai susiduriame su išimtimis dažnai reikia naudoti raktažodžių Java kreiptis į tam tikrą veiksmą. Tai jų penkių programavimo kalba:

  • Pabandyti. Šis raktažodis jau įvykdyti, o tai reiškia perėjimą į kodo skyriuje, kad gali mesti išimtį. Blokas ribota petnešos {}.
  • Pagauk. Ji perima norimą išimties tipo rankena ir ją tinkamai.
  • Galiausiai. Šis raktažodis yra neprivalomas ir yra naudojamas atlikti tam tikrą kodo fragmentą, kuris reikalingas bet kokiu atveju, net jei ne išimtis yra ne sugauti. Pridėta tiesiogiai po try bloko.
  • Mesti - leidžia jums sukurti Java išimtis iš bet kur.
  • Metimai - raktinis žodis, kuris dedamas į metodą parašu. Tai reiškia, kad šis kodas gali mesti šio tipo Java išimtis. Šis ženklas naudojamas kaip signalas kūrėjai, kuriuos reikia turėti omenyje - metodas gali neveikti taip, kaip tikimasi iš jo.

Suimti su pabandyti

Išleidimo Java išimtimis natūraliai daroma prielaida, kad jis bus tvarkomi specialiu būdu. Patogiausias būdas tai padaryti, jei kodas skyriuje yra aptverta išjungti bloką. Kuris gali būti išimtis. Paleidus šį kodą, virtualioji mašina rasite netikėtą situaciją, suprasti, kad yra kritinė blokas ir pervedimai kontroliuoti stoties su perdirbimu.

Java kodas suvynioti į specialų bloko pabandyti, per kurį gali būti išimtis. Taigi, jis dedamas keletą nenumatytų situacijų, kurios bus sugautos toje pačioje vietoje, o ne raspolzayas kodą.

Būdingiausias kodas perdirbimo vienetą yra toks:

pabandyti {

// Čia yra kodas, kuris gali generuoti išimtį

} Sugavimo (Tip_isklyucheniya_1 identifikator_1) {

// Čia yra išimtis tvarkymas, atsižvelgiant į jos tipą ir sąlygas;

} Sugavimo (Tip_isklyucheniya_2 identifikator_2) {

// Čia yra išimtis tvarkymas, atsižvelgiant į jos tipą ir sąlygas;

}

Raktažodis laimikis praneša, kad kodą ir nuskaityti išimtį, turi būti elgiamasi taip, kaip aprašyta toliau, su sąlyga, kad ji atitinka jo tipo. Identifikatorius gali būti naudojamas apdorojant kodą blokas argumentais.

pagaliau

Kaip tapo aišku iš ankstesniame skyriuje, sugavimo blokai sugaudo ir apdoroti juos. Bet labai dažnai situacija kyla tada, kai reikia paleisti tam tikrą kodą, nepriklausomai nuo to, ar jie buvo sugauti klaidų. Už tai yra raktažodis pagaliau. Jis naudojamas siekiant padidinti įvairių skaitikliai vertybes, uždarymo failus arba tinklo ryšius.

Šis sklypas pristato keletą sugavimo blokai išrado metodus sugauti išimtis. Pavyzdžiui, kodas esančius pabandyti generuoja netikėtą situaciją tokią, kaip šalta. Tada, konsolė bus rodomas išraiška «Caught šalta!" Ir "Ar tai ką linksmesni?». Tai reiškia, kad pagaliau blokas yra vykdomas bet kokiu atveju.

Tiesą sakant, būdas išvengti suveikimo pagaliau ten. Jis yra prijungtas su virtualios mašinos užbaigimo. Ieškoti, kaip ją įgyvendinti, tai galima rasti internete atvirų erdvių.

metimas raktažodžių

Metimas generuoja išimtį. Jos sintaksė yra tokia:

mesti naują NewException ();

Yra sukūrė naują išimtis tipo NewException (). Kaip tipas gali būti naudojamas jau yra įtraukta į standartinės bibliotekos Java klases ir anksčiau apibrėžia savo gamybos kūrėjas.

Šis projektas yra dalis bet metodo aprašymas, kuriame skambutis turėtų tada atsiranda per try bloko, kad galėtų ją perimti.

Raktažodis metimų

Ką daryti, jei į plėtros tokioje situacijoje, kai šis metodas gali mesti išimtį, bet negali tinkamai tvarkyti procesą. Siekiant šio tikslo, į būdą pasirašyti nurodo žodis metimų ir tipas galimų išimčių.

Ši etiketė yra rodiklis klientų kūrėjams natūra, kad šis metodas negali dirbti savo paties išimtis. Be to, jei klaida tipas pažymėtas, tada kompiliatorius bus priversti aiškiai paprašyti.

Pabandykite išteklių

Java versija 7 kūrėjai įtraukė svarbų naujovių, kaip gydymo bando blokuoti su ištekliais.

Daugelis objektai yra sukurta Java, po naudojimo turi būti uždaryti, siekiant išsaugoti išteklius. Anksčiau ji turėjo į tai atsižvelgti ir sustabdyti šiuos atvejus rankiniu būdu. Tačiau dabar jie atsirado AutoClosable sąsaja. Tai padeda automatiškai uždaryti jau naudotus daiktus patenka į try bloko. Taikant šį metodą per ji tapo patogiau rašyti kodą jos skaitomumas yra gerokai padidėjo.

Nuosavi klasės Java išimtys

Aprašyto programavimo kalba kūrėjai atsižvelgė į daugelį aspektų, dizaino tipų situacijų. Tačiau visus variantus, kad būtų išvengta įvykių baigtis neveiks, todėl Java įdiegta galimybė nustatyti savo išimtis, tikslinga iš ypač kodas poreikius.

Paprasčiausias būdas sukurti - paveldėti iš labiausiai tikslinga objekto kontekste.

Yra atsitiko paveldėti iš išskyrus klasės, kad yra naudojamas apibrėžti savo išimčių. Be MyException turi dvi konstruktorių - numatytąją, antrasis - su argumentas msg tipo String.

Tada, viešojo klasėje FullConstructors įgyvendintas F būdas, kuriame parašo metimų MyException. Šis raktažodis reiškia, kad f gali mesti kaip "Java" MyException išimties. Be to, į metodą kūno gaminami tekstinę informaciją išėjimo į pačią konsolę ir faktinio kartos MyException, kurį metimu.

Antrasis būdas yra šiek tiek skiriasi nuo pirmojo, kad kai jums sukurti išimtį, ji išlaikė eilutės parametrą, kuris bus atsispindi konsolės gaudyti. Iš esmės yra aišku, kad F () ir G () dedami į Pabandykite ir raktinių žodžių laimikis sukonfigūruotas užfiksuoti MyException. Tvarkymo rezultatas yra rodomas klaidos pranešimas konsolės:

Taigi jis atėjo pridėti Java išimtis, jo paties ranka.

Architektūra išimtys

Kaip ir su visais Java objektų, išimtys taip pat paveldėjo ir turi hierarchinę struktūrą. Šakninis elementas visų klaidų išmesti į šio programavimo kalba yra klasės java.lang.Throwable. Paveldėjo iš jo dviejų rūšių - Klaidos ir išimtis.

Klaida - signalizuoja kritinė klaida ir nepažymėta Java išimčių. Perėmimas ir perdirbimo tokie duomenys daugeliu atvejų įvyksta projektavimo etape, o ne reikia įvesti į galutinį paraiškos kodu.

Dažniausiai naudojamas klasė kuriant ir analizuojant išimtis yra išimtis. Kuri, savo ruožtu, yra padalintas į keletą šakų, įskaitant RuntimeException. Iki RuntimeException yra runtime išimtys, tai yra, vyksta per programą. Visos klasės, gautos iš jo yra nepatvirtinta.

Dažnai yra išimčių

Java išimčių, kurių sąrašas pateiktas žemiau, yra naudojami dažniausiai, todėl jums turėtų apibūdinti kiekvieną iš jų išsamiai:

  • ArithmeticException. Tai apima klaidų, susijusių su aritmetinių operacijų. Ryškiausias pavyzdys - iš nulio padalinys.
  • ArrayIndexOutOfBoundsException - apeliacija į masyvo elemento numeriu, kuri viršija jos ilgis iš viso.
  • ArrayStoreException - bandymas priskirti nesuderinamą elementų tipo masyvo.
  • ClassCastException - bandymas pareikšti neteisingą vieno tipo į kitą.
  • IllegalArgumentException - naudojant klaidingą argumentas metodo kvietimo.
  • NegativeArraySizeException - išimtis, kai jūs sukuriate neigiamos dydžio masyvas.
  • NullPointerException - piktnaudžiavimas nuorodomis į NULL.
  • NumberFormatException - atsiranda, kai blogai eilutė pavertimas sveikasis skaičius.
  • UnsupportedOperationException - operacija nepalaikoma.

Šie pavyzdžiai atstovauti Neregistruoto Java išimčių tipus. Bet taip atrodo patikrinti:

  • ClassNotFoundException - klasė nerastas.
  • IllegalAcccessException - apriboti prieigą prie klasės.
  • InterruptedException - nutraukimas srautą.
  • NoSuchFieldException - nėra būtinas laukas.

Iš išimčių aiškinimas

Kalbėdamas dažnai susiduriama išimtis turėtų būti pažymėta, kad jų aiškinimas dizaino, gali būti neteisingai suprasta. Kitas yra trumpas sąrašas paaiškinti išsamiau, kur gali būti netikėtas situacija.

NullPointerException. Pats pirmas atvejis, kai yra išimtis, yra kreiptis į nuoroda į objektą, kuris yra lygus NULL. Ji taip pat apima nulinio klasės egzemplioriui metodus. NullPointerException gali būti išmestas į gaunant vienodo ilgio null masyvo atveju. Siekiant išvengti tokių situacijų bus periodiškai tikrinti svetaines null.

ArrayIndexOutOfBoundsException. Bet programa negali egzistuoti be masyvų naudojimo. Todėl dažnai kreipiasi, gali generuoti ir klaidų. Išimtis atsitinka, kai kūrėjas bando prisijungti prie masyvo elemento, kuris yra ne indekso sąrašą. Pavyzdžiui, prašoma vertė yra virš arba žemiau nulio ilgio. Labai dažnai yra tai, kad masyvo prasideda nulio rezultatas rezultatas.

išvados

Tvarkymo Java išimtis - galingas įrankis, aplinka, o tai labai palengvina programuotojas darbą ir leidžia jam sukurti švarų ir neturi kodas klaidų. Apie tai, kaip sklandžiai ir stabiliai veikiančios taikymas priklauso nuo būklės ir reputacijos kūrėjas.

Žinoma, daugiau ar mažiau paprastų programų atsekti nenormalias situacijas daug lengviau. Tačiau didelių automatizuotų kompleksų kelis šimtus tūkstančių eilučių tai įmanoma tik kaip ilgalaikio testavimo ir derinimo rezultatas.

Java išskyrus klaida, iš kurios kyla kai paraiškas, kai kurios įmonės siūlo atlygį, kai jie randa entuziastai. Ypač dėkingi tiems, kurie sukelia Saugumo politikos programinės įrangos pažeidimas.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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