Java: iznimka i njihova obrada

Svaki program će raditi stabilno samo ako je njegov izvorni kod prilagođen i nema uvjeta koji mogu uzrokovati nepredviđene situacije. Proces hvatanja mogućih neuspjeha provodi se u fazi programiranja. Za to, programer uzima u obzir sve predvidive rezultate i pokušava ograničiti pogrešku na takav način da ne može prekinuti program ili uzrokovati pad sustava.

Kada se može zahtijevati rukovanje iznimkama

U Javi, iznimke mogu biti uzrokovane nepravilnim korisničkim unosom, nedostatkom resursnih resursa potrebnih za rad programa ili iznenadnim gašenjem mreže. Za udobno korištenje programa kreiranog od strane programera, potrebno je kontrolirati pojavu izvanrednih situacija. Potrošač ne bi trebao čekati da se završi program zavjese, izgubi podatke kao rezultat sirovih iznimaka ili jednostavno primijeti da je nešto pošlo po zlu.


Upravljanje iznimkama Java

Što treba uzeti u obzir? Java jezik ima vlastitu ugrađenu funkcionalnost za upravljanje iznimkama. Naravno, veliki postotak pogrešaka je uhvaćen još u fazi kompilacije, kada sustav automatski objavljuje da ga nije moguće dalje koristiti. Ali postoji i tip iznimke koji se pojavljuje kada se program izvodi. Programer mora biti u stanju to predvidjeti i dizajnirati kôd tako da ne uzrokuje pogrešku, već ga obrađuje na poseban način ili prenosi upravljanje drugomgranu U Javi, ovu vrstu iznimke nameće prevodilac, tako da su tipični problemi poznati i imaju vlastitu standardnu ​​shemu izvršavanja.

Tipične iznimke

Najjednostavniji primjer u kojem se može dobiti iznimka je podjela. Unatoč svojoj jednostavnosti, u izrazu, kao djelitelj može biti nula, što će dovesti do pogreške. Pa, ako se njegov izgled može predvidjeti i spriječiti. No, ova opcija nije uvijek dostupna, pa bi se iznimka trebala organizirati odmah kada postoji "nula podjela".


U Javi mehanizam obrade za presretanje pogreške izgleda ovako:
  • objekt isključenja se stvara u odjeljku, kao i bilo koji drugi;
  • prekida se prirodni tijek programa;
  • mehanizam isključenja pokušava pronaći alternativni način proširenja koda;
  • pronalaženje sigurnog izvršenja programa u procesoru, radu ili će biti vraćeno ili provedba iznimke na poseban način.
  • Najjednostavniji primjer pogreške može izgledati ovako: ako (== null) bacite novi NullPointerException (); Ovdje je varijabla a provjerena za inicijalizaciju, to jest, nije jednaka referenci na objekt null. Ako se takva situacija pojavi i zahtijeva posebnu obradu, isključenje se izbacuje s bacanjem novog NullPointerException ().

    Neke pojedinosti o ključnim riječima

    Kada se radi o iznimkama, često se moraju koristiti ključne riječi Jave za označavanje radnje. U ovom programskom jeziku postoji pet:
  • Pokušajte. Ova je ključna riječ već ispunjena i to znači da je to prijelaz na područje koda koje to možegenerira iznimku. Blok je kovrčava zagrada {}.
  • Uhvatiti. Presreće potrebnu vrstu iznimke i postupa sukladno tome.
  • Konačno. Ova ključna riječ je opcionalna i služi za izvršavanje bilo kojeg područja koda koje je potrebno u svakom slučaju, čak i ako se ne presretne nikakva iznimka. Odmah nakon pokušaja blokiranja.
  • Throw - omogućuje vam da napravite Java isključenje na bilo kojem mjestu koda.
  • Bacanje - ključ koji se stavlja u potpis metode. To znači da sljedeći kod može baciti iznimku na određenu vrstu Java-a. Ova oznaka služi kao signal za programere, što treba imati na umu - metoda možda neće raditi onako kako se očekuje.
  • Uzimajući u obzir

    Iznimka u Javi, naravno, pretpostavlja da će biti posebno obrađena. To je najprikladnije ako je područje koda blokirano u bloku. Koji mogu sadržavati iznimku. Kada izvršavate takav kod, virtualni stroj će pronaći nepredviđenu situaciju, shvatiti da je u kritičnom bloku i proći kontrolu na područje s obradom.
    Java kod je zamotan u poseban probni blok, unutar kojeg se može generirati iznimka. Tako je odjednom postavio nekoliko nepredviđenih situacija, koje će biti uhvaćene na jednom mjestu, bez probijanja koda. Najtipičniji kod s jedinicom za obradu izgleda ovako: try {//Ovo će identificirati kod koji može generirati iznimku} catch (Type_exclusion_1 identifier_1) {//Ova obrada iznimke se radi prema vrsti i uvjetima; } catch (Iznimka tip_2)identifier_2) {//Ovdje se obrada iznimke vrši prema njezinoj vrsti i uvjetima; } Ključna riječ catch navodi da se kod iznimke obrađuje kako je opisano u nastavku, pod uvjetom da odgovara njegovom tipu. ID se može koristiti unutar bloka koda za obradu kao argumente.

    Konačno

    Kao što je iz prethodnog poglavlja postalo jasno, blokirajte iznimke ulova i obradite ih. No vrlo često se javlja situacija kada kod mora proći, bez obzira na to jesu li pogreške uhvaćene. Za to postoji ključna riječ na kraju. Koristi se za povećanje vrijednosti različitih brojača, zatvaranje datoteka ili mrežnih veza.
    U ovom odjeljku postoji nekoliko blokova ulova s ​​fiktivnim iznimkama ulova. Na primjer, kod koji se nalazi u pokušaju generira nepredvidivi slučaj hladnoće. Tada će izrazi "Uhvatiti hladno!" I "Je li to nešto za razveseliti?" Prikazano u konzoli. To jest, blok se konačno izvršava u svakom slučaju. U stvari, način na koji se izbjegava početak je napokon tu. Povezan je s dovršenjem virtualnog stroja. Pronalaženje načina provedbe može se naći na internetu.

    Bacanje ključne riječi

    Bacanje generira iznimku. Sintaksa izgleda ovako: bacite novu NewException (); To stvara novu iznimku s tipom NewException (). Kao tip se već može koristiti u standardnim klasama Java knjižnica i prethodno definiran od strane razvojnog inženjera vlastite proizvodnje. Takva konstrukcija uključena je u opis bilo koje metode, čiji bi se izazov trebao pojaviti unutar probnog bloka, kako bi biomogućnost da ga presresti.

    Ključna bacanja

    Što učiniti ako postoji situacija u procesu dizajna kada metoda može generirati iznimku, ali je ne može ispravno obraditi. Za to se u potpisu metode navode riječi bacanja i vrsta mogućeg isključenja. Ova oznaka je poseban vodič za programere klijenata da metoda ne može obraditi vlastitu iznimku. Osim toga, ako je tip pogreške provjeren, kompajler će ga prisiliti da ga izričito odredi.

    Pokušajte s resursima

    U Javi 7, programeri su uključili tako važnu inovaciju kao što je obrada probnog bloka s resursima. Mnogi su stvoreni objekti u Javi, nakon njihova korištenja, trebali biti zatvoreni kako bi se uštedjeli resursi. Ranije je to moralo uzeti u obzir i zaustaviti takve slučajeve rukom. Sada imaju sučelje AutoClosable. Pomaže automatski zatvoriti prethodno korištene objekte koji se nalaze u probnom bloku. Zahvaljujući tom pristupu, pisanje koda postalo je praktičnije, njegova čitljivost se značajno povećala.

    Klasa vlastite iznimke Java

    Kreatori opisanog programskog jezika uzeli su u obzir mnoge aspekte prilikom dizajniranja vrsta nepredviđenih okolnosti. Međutim, sve varijante rezultata događaja neće spriječiti, tako da Java ima mogućnost definirati vlastite iznimke koje točno odgovaraju potrebama određenog koda. Najlakši način stvaranja je naslijediti od najrelevantnijeg konteksta objekta.
    Postojao je niz Izuzeća, klase koja se koristila za definiranje vlastitih iznimaka. MyException ima dva konstruktora - jedan po zadanom,drugi s tipom argumenta String. Tada javna klasa FullConstructors implementira metodu f, čiji potpis sadrži bacanje MyException. Ova ključna riječ znači da f može baciti iznimku na MyException tip Java. Tada u tijelu metode izlaze tekstualne informacije na konzolu i samu generaciju MyException, uz pomoć bacanja. Druga metoda se neznatno razlikuje od prve, da prilikom kreiranja iznimke prolazi parametar niza koji će biti prikazan u konzoli na zvižduku. U glavnom, jasno je da su f () i g () smješteni u probnom bloku za provjeru, a ključna riječ catch je konfigurirana za ulov MyException. Rezultat obrade je izlaz poruke o pogrešci u konzoli:
    Tako da je bilo moguće dodati isključenje Java, koje ste sami stvorili.

    Arhitektura iznimke

    Kao i svi objekti u Javi, iznimke su također naslijeđene i imaju hijerarhijsku strukturu. Korijenski element svih pogrešaka koje su bačene u ovom programskom jeziku je klasa java.lang.Throwable. Od njega naslijediti dvije vrste - Error i Exception.
    Pogreška - upozorava vas na kritične pogreške i ne provjerava je li isključeno Java. Presretanje i obrada takvih podataka u većini slučajeva je u izradi i ne zahtijeva uvođenje u šifru završnog programa. Najčešće korištena klasa za izradu i analizu iznimaka je Iznimka. Što je zauzvrat podijeljeno u nekoliko grana, uključujući RuntimeException. RuntimeException uključuje iznimke izvođenja, odnosno pojavljuju se dok se program izvodi. Sve klase koje su naslijeđene od njega su ne-viour.

    Često se susrećuIznimka

    U iznimci se Java, čiji je popis prikazan u nastavku, najčešće koristi, pa je vrijedno svaki od njih detaljno opisati:
  • ArithmeticException. To uključuje pogreške povezane s aritmetičkim operacijama. Najočitiji primjer je podjela na nulu.
  • ArrayIndexOutOfBoundsException - referenca na broj elementa niza koji prelazi njegovu ukupnu duljinu.
  • ArrayStoreException - Pokušaj dodjeljivanja elementa niza nekompatibilnog tipa.
  • ClassCastException je pokušaj pogrešnog unosa jednog tipa u drugi.
  • IllegalArgumentException - koristite pogrešan argument u pozivu metode.
  • NegativeArraySizeException je iznimka kada se stvara niz negativnih dimenzija.
  • NullPointerException - Upotreba referencije na null je netočna.
  • NumberFormatException - pojavljuje se kada je niz pogrešno pretvoren u broj.
  • ​​
  • UnsupportedOperationException - operacija nije podržana.
  • Ovi primjeri nisu provjereni za vrste Java iznimaka. Ali ovo izgleda provjereno:
  • ClassNotFoundException - klasa nije pronađena.
  • IllegalAcccessException - Ograničavanje pristupa klasi.
  • InterruptedException - prekida protok niti.
  • NoSuchFieldException - nema obveznog polja.

    Tumačenje iznimaka

    Govoreći o čestim iznimkama, treba napomenuti da se njihova interpretacija tijekom razvoja može pogrešno shvatiti. U nastavku je mali popis koji detaljnije objašnjava kada postoji neplanirana situacija.
    NullPointerException. Prva iznimka kada postoji iznimka je referenca na referencu na objekt koji je jednaknull. To se također odnosi na metode nula primjera klase. NullPointerException može biti bačen iu slučaju dobivanja duljine polja je nula. Izbjegavanje takvih situacija pomoći će povremeno skeniranje objekata za vrijednost null. ArrayIndexOutOfBoundsException. Bilo koji program ne može postojati bez uporabe nizova. U skladu s tim, učestalo liječenje može uzrokovati pogreške. Postoji iznimka kada programer pokušava pristupiti elementu niza koji nije na popisu indeksa. Na primjer, tražena vrijednost je iznad duljine ili manja od nule. Vrlo često to proizlazi iz činjenice da račun u nizu počinje od nule.

    Zaključci

    Obrada izuzetaka Java - moćno okruženje alata, koje uvelike olakšava rad programera i omogućuje mu stvaranje čistog koda bez grešaka. Status i reputacija razvojne tvrtke ovise o glatkoj i stabilnoj funkciji aplikacije.
    Naravno, u više ili manje jednostavnim programima, mnogo je lakše pratiti situacije s outsourcingom. No, u velikim automatiziranim kompleksima za nekoliko stotina tisuća linija to je moguće samo kao rezultat dugotrajnog otklanjanja pogrešaka i testiranja. Za Java iznimke, pogreške koje se pojavljuju u nekim aplikacijama, pojedinačne tvrtke nude nagrade kada ih pronađu entuzijasti. Posebno su cijenjeni oni koji uzrokuju kršenje sigurnosnog pravila softverskog paketa.
  • Povezane publikacije