RačunariProgramiranje

Java: izuzeci i njihovo rukovanje

Svaki program će raditi stabilno samo ako je njegov izvorni kod debugiran, a ne postoje uslovi koji mogu prouzrokovati nepredviđene situacije. Proces hvatanja mogućih kvarova se vrši u fazi programiranja. Da bi to uradio, programer uzima u obzir sve očekivane ishode i pokušava ograničiti efekat greške, tako da ne može prekinuti program ili dovesti do njegovog kolapsa.

Kada biste možda trebali riješiti izuzetke

U Java-u, izuzeci mogu biti uzrokovani netačnim korisničkim unosom, nedostatkom resursa koji je potreban za pokretanje programa ili iznenadnim isključivanjem mreže. Za ugodnu upotrebu aplikacije koju je napravio programer, neophodno je kontrolisati pojavljivanje vanrednih situacija. Potrošač ne bi trebalo da sačeka da program obešen završi svoj rad, gubi podatke kao rezultat neobjavljenih izuzetaka ili samo često pojavljujuće poruke da je nešto pošlo naopako.

Rukovanje Java izuzecima

Šta treba razmotriti? Jezik Java ima ugrađenu funkciju upravljanja izuzetkom. Naravno, veliki procenat grešaka je uhvaćen u fazi kompilacije, kada će sistem automatski prijaviti da se ne može dalje koristiti. Ali postoje i takvi izuzeci koji se javljaju tokom rada programa. Programer mora biti u mogućnosti da to predvidi i dizajnira kod na takav način da ne uzrokuje greške, ali ga tretira na poseban način ili prenese kontrolu na drugu granu.

U Java-u, takav ulov izuzetaka nametne kompajlerom, tako da su poznati tipični problemi i imaju svoju standardnu šemu izvršavanja.

Tipične izuzetke

Najjednostavniji primer u kome možete dobiti izuzetak je podela. Uprkos svojoj jednostavnosti, u izrazu, kao divisor, može biti nula, što će dovesti do greške. Pa, ako se njegovo pojavljivanje može ranije predvideti i sprečiti. Ali ova opcija nije uvek dostupna, tako da je neophodno odmah organizovati izuzetak uhvaćavanja ako se desi "podela nule".

U Java-u, mehanizam za obradu grešaka izgleda ovako:

  • U gomilu se kreira objekat izuzetaka, kao i bilo koji drugi;
  • Prirodni tok programa je prekinut;
  • Mehanizam izuzetaka pokušava pronaći alternativni način za nastavak koda;
  • Pronalaženje mesta sigurnog izvršavanja programa u rukovodiocu, rad će biti obnovljen ili će se izuzetak primenjivati na poseban način.

Najjednostavniji primer stvaranja greške može izgledati ovako:

Ako (a == null)

Bacite novi NullPointerException ();

Ovde se provjerava varijabla a za inicijalizaciju, npr. Nije jednaka nultoj referenci. U slučaju da se ova situacija pojavi i potrebna je posebna obrada, izuzetak se izbacuje bacanjem novog NullPointerException ().

Neki detalji o ključnim rečima

Kada radite sa izuzecima, često morate da koristite Java ključne reči da biste se pozvali na akciju. Na ovom programskom jeziku ima ih pet:

  • Pokušaj. Ova ključna reč je već naišla i znači da ide u odeljak koda koji može baciti izuzetak. Blok je ograničen na zakrivljene kočnice {}.
  • Uhvati. On povezuje odgovarajuću vrstu izuzetaka i obrađuje ga u skladu s tim.
  • Konačno. Ova ključna reč je opcionalna i služi za izvršavanje komada koda koji je neophodan u svakom slučaju, čak i ako se ne presreši izuzetak. Dodaje se odmah nakon pokušaja blokiranja.
  • Bacanje - vam omogućava kreiranje Java izuzetaka bilo gdje u kodu.
  • Baci je ključna reč koja se nalazi u potpisu metode. To znači da sledeći kod može izbaciti izuzetak iz Jave određenog tipa. Ova oznaka služi kao signal za programere, što morate imati na umu - metoda možda neće raditi kako je očekivano.

Uhvatite se sa pokušajem

Bacanje u izuzetak iz Jave, prirodno pretpostavlja da će se tretirati na poseban način. Najprikladniji način za to je ako se šifarski odjeljak deli u blok. Što možda sadrži izuzetak. Kada izvršavate takav kôd, virtuelna mašina pronalazi neočekivanu situaciju, shvata da je u kritičnom bloku i prenijela kontrolu u oblast za obradu.

U Java-u, kôd je upakovan u poseban blok pokušaja, unutar kojeg se izuzetak može baciti. Stoga se u njoj stavljaju nekoliko nepredviđenih situacija, koje će biti uhvaćene na jednom mjestu, bez kretanja po kodu.

Najtipičniji kod sa blokom obrade izgleda ovako:

Pokušajte {

// Ovo će odrediti kod koji može baciti izuzetak

} Uhvati (Extraction_1_1 identifier_1) {

// Ovde se izuzetak obrađuje, prema vrsti i uslovima;

} Catch (Extraction_type_2 identifier_2) {

// Ovde se izuzetak obrađuje, prema vrsti i uslovima;

}

Ključna reč za uhvat obaveštava da se kod koji podleže proveri izuzetaka treba obraditi kako je opisano u nastavku, pod uslovom da se podudara s njegovim tipom. Identifikator se može koristiti u okviru koda za obradu kao argument.

Konačno

Kako je postalo jasno iz prethodnog poglavlja, blokovi ulova ulovili su izuzetke i obrađivali ih. Ali vrlo često postoji situacija kada neki kod treba da izvrši, bez obzira na to da li su greške uhvaćene. Za ovo, konačno ključna riječ postoji. Koristi se za povećanje vrednosti različitih brojača, zatvaranja datoteka ili veza sa mrežom.

U ovom odeljku ima nekoliko blokova za ulov sa izmišljenim metodima hvatanja izuzetaka. Na primjer, kod sadržan u pokušaju generiše neočekivanu situaciju tipa Cold. Tada su izrazi "Uhvaćeni hladno!" I "Da li je to nešto o čemu se treba navijati?" Prikazat će se u konzoli. To jest, konačno blok se izvršava u svakom slučaju.

Zapravo, postoji način da se izbjegne konačno izvođenje. To je vezano za prestanak virtualne mašine. Saznajte kako se to može učiniti na Internetu.

Ključna reč bacanja

Bacanje baca izuzetak. Njegova sintaksa izgleda ovako:

Bacite novi NewException ();

Ovde se kreira novi izuzetak s tipom NewException (). Kao tip možete koristiti klase već uključene u standardne Java biblioteke i definisane ranije od strane programera vaše sopstvene proizvodnje.

Takva konstrukcija je uključena u opis bilo koje metode, čiji se poziv tada mora pojaviti u okviru blokiranja pokušaja, kako bi ga mogli presretati.

Baci ključne reči

Šta uraditi ako u procesu razvoja postoji situacija u kojoj metoda može baciti izuzetak, ali to ne može ispravno da reši. Da bi to učinili, potpis metode određuje bacanje reči i vrstu mogućih izuzetaka.

Ova oznaka je vrsta pokazivača za programera klijenata da metoda nije u stanju da obradi sopstveni izuzetak. Pored toga, ako je tip greške verifikovan, kompajler će to eksplicitno odrediti.

Pokušajte sa resursima

U Java verziji 7, programeri su uključili takvu važnu inovaciju kao obradu pokušaja blokiranja sa resursima.

Mnogi objekti kreirani u Java, nakon njihove upotrebe, moraju biti zatvoreni da bi sačuvali resurse. Ranije ste morali ručno da računate i zaustavljate takve slučajeve. Sada imaju interfejs AutoClosable. Pomaže u automatskom zatvaranju već korištenih objekata, postavljenih u blok za probanje. Zahvaljujući ovom pristupu, postalo je pogodnije napisati kod, čitaoca se znatno povećala.

Izuzetna klasa izuzetaka Java

Kreatori opisanog programskog jezika uzeo su u obzir mnoge aspekte prilikom dizajniranja vrsta nepredviđenih situacija. Međutim, ne mogu se sprečiti sve varijante ishoda događaja, pa je u Javi moguće odrediti sopstvene izuzetke koji su pogodni za potrebe određenog koda.

Najjednostavniji način stvaranja je nasledstvo od najprikladnijeg objekta do konteksta.

Ovde ste nasledili iz Exception-a, klase koja se koristi za definisanje sopstvenih izuzetaka. U MyException-u postoje dva konstruktora - jedan po defaultu, drugi - sa argumentom tipa tipa String.

Zatim u javnoj klasi FullConstructors, implementira se metoda f, čiji potpis sadrži bacanje MyException. Ova ključna riječ znači da f može baciti Java izuzetak tipa MyException. Nadalje, u telu metode, tekstualne informacije se izlaze na konzolu i stvarnu generaciju MyException-a, bacanjem.

Druga metoda je malo drugačija od prve u tome kada se izbacuje izuzetak, prenese se niz parametra na nju, što će se reflektovati u konzoli kada je snimljena. U glavnom, videćete da su f () i g () postavljeni u blok za probanje, a ključna reč catch je podešena da uhvati MyException. Rezultat obrade je izlaz poruke poruke o grešci na konzolu:

Tako je bilo moguće dodati Java izuzetke stvorene sopstvenom rukom.

Izuzetna arhitektura

Kao i svi objekti u Java, izuzeci su takođe nasleđeni i imaju hijerarhijsku strukturu. Osnovni element svih grešaka izbačenih na ovom programskom jeziku je java.lang.Throwable klasa. Podeduje dve vrste - Greška i Izuzeci.

Greška - obaveštava o kritičnim greškama i predstavlja neproverene Java izuzetke. U većini slučajeva presretanje i obrada takvih podataka se dešavaju u fazi razvoja i ne moraju se implementirati u kodu konačne aplikacije.

Najčešće korišćena klasa za kreiranje i analizu izuzetaka je Izuzetak. Što je, pak, podeljeno na nekoliko grana, uključujući i RuntimeException. RuntimeException se odnosi na izvode izvodjenja vremena, odnosno na one koji se javljaju dok se program pokreće. Sve klase nasleđene iz nje nisu potvrđene.

Zajednički izuzeci

U izuzecima iz Jave, čija je lista prikazana ispod, najčešće se koriste, pa je vredno opisati svaku od njih detaljnije:

  • ArithmeticException. Ovo uključuje greške vezane za aritmetičke operacije. Najupečatljiviji primer je podjela nula.
  • ArrayIndexOutOfBoundsException - pristup broju elementa niza koji premašuje njegovu ukupnu dužinu.
  • ArrayStoreException - pokušaj dodeljivanja elementa niza nekompatibilnog tipa.
  • ClassCastException je pokušaj pogrešnog interpretiranja jednog tipa u drugi.
  • IllegalArgumentException - korišćenje pogrešnog argumenta u pozivu metode.
  • NegativeArraySizeException je izuzetak pri kreiranju niza negativnih veličina.
  • NullPointerException - pogrešna upotreba nultne reference.
  • NumberFormatException - pojavljuje se kada string nije konvertovan u broj.
  • UnsupportedOperationException - operacija nije podržana.

Ovi primeri su neprovereni tipovi Java izuzetaka. I tako proverite:

  • ClassNotFoundException - klasa nije pronađena.
  • IllegalAcccessException - ograničava pristup klasi.
  • InterruptedException - prekid proticaja.
  • NoSuchFieldException - potrebno polje ne postoji.

Tumačenje izuzetaka

Govoreći o uobičajenim izuzecima, treba napomenuti da se njihova interpretacija u toku razvoja može pogrešiti. Zatim, postoji mala lista koja objašnjava detaljnije kada se može pojaviti nepredviđena situacija.

NullPointerException. Prvi put kada dođe do izuzetka odnosi se na referencu objekta koja je nula. Ovo se odnosi i na metode nultog instance klase. NullPointerException se može baciti i ako je dužina polja nula. Izbegavajte takve situacije tako što ćete periodično proveravati predmete na nultom nivou.

ArrayIndexOutOfBoundsException. Svaki program ne može postojati bez korištenja nizova. Prema tome, česta referenca na njih može dovesti do grešaka. Izuzetak se javlja kada programer pokuša pristup elementu niza koji nije u listi indeksa. Na primjer, tražena vrijednost je iznad dužine ili manja od nule. Često se javlja kao rezultat činjenice da broj u nizu počinje od nule.

Zaključci

Upravljanje izuzetkom Java je moćan središnji alat koji u velikoj mjeri olakšava rad programera i omogućava mu da kreira čist i bez grešaka. Status i reputacija kompanije za razvoj zavisi od toga kako glatko i stabilno aplikacija funkcioniše.

Naravno, u više ili manje jednostavnim programima, mnogo je lakše pratiti freelance situacije. Ali u velikim automatizovanim kompleksima za nekoliko stotina hiljada linija, ovo je moguće samo kao rezultat dugotrajnog otklanjanja grešaka i testiranja.

Za izuzete iz Jave, greške koje se pojavljuju u nekim aplikacijama, pojedine kompanije nude nagrade kada su entuzijasti. Posebno su cenjeni oni koji uzrokuju kršenje bezbednosne politike softverskog kompleksa.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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