Java: iznimke i njihovo rukovanje
Svaki program će raditi stabilno samo ako je njegov izvorni kod ispravljen i nema uvjeta koji mogu prouzročiti nepredviđene situacije. Proces hvatanja mogućih kvarova obavlja se u fazi programiranja. Da biste to učinili, programer uzima u obzir sve očekivane ishode i pokušava ograničiti učinak pogreške kako ne bi mogao slomiti program ili dovesti do njezinog sloma.
sadržaj
Kad biste trebali raditi s iznimkama
U Java, iznimka mogu biti uzrokovani neispravnim korisničkog unosa, nema potrebe za resursima ili iznenadne mreže isključenje programa. Za udobnu upotrebu aplikacije koju je izradio programer, potrebno je kontrolirati pojavu izvanrednih situacija. Potrošač ne bi trebali čekati da zatvorite program, izgubiti podatke kao rezultat je neobrađeni izuzetak, ili samo dio pojavit će se poruka u kojoj se navodi da je nešto pošlo po zlu.
Rukovanje Java iznimkama
Što treba razmotriti? Java jezik ima vlastitu ugrađenu funkcionalnost rukovanja iznimkama. Naravno, veliki postotak pogreške je uhvaćen od strane druge kompilacije fazi, sustav će automatski obavijestiti da upotreba to više nije moguće. No, tu su i takve iznimke koje nastaju dok se program izvodi. Programer bi trebao biti u mogućnosti to predvidjeti i oblikovati kod tako da to nije uzrok pogreške, a obrađuju ga na poseban način i predati kontrolu na drugu granu.
U Java, takav hvatanje iznimki nametnuo je prevodilac, tako da su tipični problemi poznati i imaju svoje standardne sheme izvršenja.
Tipične iznimke
Najjednostavniji primjer u kojem možete dobiti iznimku jest podjela. Unatoč svojoj jednostavnosti, izrazu, kao djelitelj, može postojati nula, što će dovesti do pogreške. Pa, ako se njegov izgled može ranije unaprijed predvidjeti i spriječiti. No ta opcija nije uvijek dostupna, pa se iznimka za hvatanje treba organizirati izravno kada se pojavi "podjela prema nuli".
U Java, mehanizam rukovanja pogreškama izgleda ovako:
- Izgubljeni objekt nastaje na hrpi, baš kao i bilo koji drugi;
- prirodni tijek programa je prekinut;
- mehanizam iznimke pokušava pronaći alternativni način za nastavak koda;
- Pronalaženje mjesta sigurne izvedbe programa u rukovatelju, posao će se obnoviti ili će se iznimka provesti na poseban način.
Najjednostavniji primjer izrade pogreške može izgledati ovako:
ako (a == null)
bacanje novog NullPointerException ();
Ovdje se promatra varijabla a za inicijalizaciju, tj. nije jednak nuli. U slučaju da se dogodi ova situacija i potrebna je posebna obrada, izuzetak se baca s novim NullPointerException ().
Nekoliko pojedinosti o ključnim riječima
Kada radite s iznimkama, često morate koristiti Java ključne riječi kako biste se uputili na radnju. Na ovom programskom jeziku postoji pet od njih:
- Pokušajte. Ova ključna riječ već je naišao i znači da ide na dio koda koji može baciti iznimku. Blok je ograničen na kovrčaste zavoje {}.
- Ulov. Prikvači odgovarajuću vrstu iznimke i rukuje ga na odgovarajući način.
- Na kraju. Ova je ključna riječ neobvezna i služi za izvršavanje komada koda koji je nužan u svakom slučaju, čak i ako se ne presijeca nikakva iznimka. Dodaje se odmah nakon probnog bloka.
- Baciti - omogućuje izradu Java iznimaka bilo gdje u kodu.
- Bacanje je ključna riječ koja se nalazi u potpisivanju metode. To znači da naknadni kod može odbaciti Java iznimku navedene vrste. Takva oznaka služi kao signal razvojnim programerima, što trebate imati na umu - metoda možda neće funkcionirati kako se očekuje.
Uhvatite s probati
Bacanje u Java iznimku, naravno pretpostavlja da će se tretirati na poseban način. Najjednostavniji način za to je ako je odjeljak koda particioniran u blok. Što možda sadrži izuzetak. Prilikom izvršavanja takvog koda, virtualni stroj pronalazi neočekivanu situaciju, razumije da je u kritičnom bloku i prenosi kontrolu na područje za obradu.
Kod Java kôd je zamotan u posebnu probnu blokadu, unutar kojega se može izuzeti iznimka. Stoga istodobno postavlja nekoliko neočekivanih situacija koje će biti uhvaćene na jednom mjestu, bez pušenja duž koda.
Najčešći kod s blokom za obradu izgleda ovako:
pokušajte {
// To će odrediti kod koji može izuzeti iznimku
} uhvatiti (Exception_Type_1 identifier_1) {
// Ovdje se iznimka obrađuje, prema vrsti i uvjetima;
} catch (Extraction_type_2 identifier_2) {
// Ovdje se iznimka obrađuje, prema vrsti i uvjetima;
}
Riječ ulov javlja taj kod, i skenirati ga za Iznimno, biti tretirani kao što je opisano u nastavku, pod uvjetom da je u skladu sa svojom vrstom. Identifikator se može upotrijebiti unutar bloka kodiranja kao argumente.
napokon
Kao što je postalo jasno iz prethodnog poglavlja, ulovni blokovi zauzimaju iznimke i obrađuju ih. No, vrlo često postoji situacija u kojoj treba izvršiti neki kôd, bez obzira na to jesu li zabilježene pogreške. Za to postoji konačna ključna riječ. Koristi se za povećanje vrijednosti različitih brojača, zatvaranja datoteka ili veza na mrežu.
Na tom području izmišljeno je nekoliko blokova ulova s izumljenim metodama uhvativši iznimke. Na primjer, kôd koji se nalazi u pokušaju generira neočekivanu situaciju tipa Hladno. Onda je izraz "Uhvatio hladnoću!" I "Je li to nešto za veselje?" Bit će prikazano na konzoli. To jest, konačni blok se izvršava u svakom slučaju.
Zapravo, postoji način izbjegavanja konačnog vođenja. Povezan je s ukidanjem virtualnog stroja. Saznajte kako se to može učiniti na internetu.
Ključna riječ bacanja
Bacanje baca iznimku. Sintaksa izgleda ovako:
bacati novu NewException ();
Ovdje se stvara nova iznimka s vrstom NewException (). Kao vrstu, možete koristiti klase koje su već uključene u standardne Java biblioteke i definirane ranije od strane razvojnog programera vaše vlastite produkcije.
Takva je konstrukcija uključena u opis nekog postupka, koji se zatim mora nazvati unutar probnog bloka, kako bi ga mogao presresti.
Bacanje ključnih riječi
Što učiniti ako u procesu razvoja postoji situacija u kojoj metoda može baciti iznimku, ali ga ne može ispravno rukovati. Da biste to učinili, potpis metode određuje riječ baca i vrstu mogućeg izuzetka.
Ova oznaka je vrsta pokazivača programerima klijenta da metoda nije u stanju obraditi vlastitu iznimku. Osim toga, ako je vrsta pogreške provjerljiva, prevodilac će to izričito odrediti.
Pokušajte s resursima
U Java verziji 7, programeri su uključili takvu važnu inovaciju kao obrada probnog bloka s resursima.
Mnogi objekti stvoreni u Javi, nakon njihove upotrebe, moraju biti zatvoreni radi spremanja resursa. Prethodno ste morali računati i zaustaviti takve slučajeve ručno. Sad imaju sučelje AutoClosable. Pomaže u automatskom zatvaranju već korištenih objekata, postavljenih u probni blok. Zahvaljujući ovom pristupu, postalo je prikladnije napisati kod, čija je čitljivost značajno povećana.
Prilagođene Java iznimke
Stvoritelji opisanog programskog jezika uzimali su u obzir mnoge aspekte prilikom oblikovanja vrsta nepredviđenih situacija. Međutim, ne mogu se spriječiti sve varijante ishoda događaja, pa je u Javau moguće ostvariti vlastite iznimke, prikladne za potrebe određenog koda.
Najjednostavniji način stvaranja jest naslijediti od objekta koji je najprikladniji za kontekst.
Ovdje ste naslijedili iz iznimke, klase koja se koristi za definiranje vlastitih iznimaka. U MyExceptionu postoje dva konstruktora - jedan prema zadanim postavkama, drugi - s argumentom msg tipa String.
Zatim, u javnim razredima FullConstructors, implementira se metoda f, čiji potpis sadrži baciti MyException. Ova ključna riječ znači da f može odbaciti Java iznimku od vrste MyException. Nadalje, u tijelu metode, tekstualne informacije se emitiraju na konzolu i stvarnu generaciju MyException, putem bacanja.
Druga metoda se malo razlikuje od prvog, jer kada se izbaci iznimka, prenesena mu je naredba koja će se odraziti na konzoli kada je snimljena. U glavnom, vidjet ćete da su f () i g () postavljeni u probni blok, a ključna riječ hvatanja postavljena je na ulov MyException. Rezultat obrade je izlaz poruka o pogrešci na konzolu:
Tako je bilo moguće dodati iznimke Java, stvorene ručno.
Izuzetak arhitekture
Kao i svi objekti u Javi, iznimke su također naslijeđene i imaju hijerarhijsku strukturu. Korijenski element svih pogrešaka u programskom jeziku java.lang.Throwable class. Nasljeđuje dvije vrste - Pogreška i iznimka.
Pogreška - obavještava o kritičnim pogreškama i predstavlja neoznačene Java iznimke. Presretanje i obrada takvih podataka u većini se slučajeva javlja u fazi razvoja i ne mora se provoditi u kodu konačne prijave.
Najčešće korišteni razred za izradu i analizu iznimaka je Izuzetak. Koji je, pak, podijeljen u nekoliko grana, uključujući RuntimeException. RuntimeException se odnosi na iznimke iz runtime, tj. Onih koji se javljaju dok se program pokreće. Sve klase koje su iz nje naslijeđene neprovedive su.
Česti izuzeci
U Java iznimkama, čiji je popis prikazan u nastavku, najčešće se koriste, stoga je vrijedno detaljnije opisati svaku od njih:
- ArithmeticException. To uključuje pogreške vezane uz aritmetičke operacije. Najočigledniji primjer je podjela prema nuli.
- ArrayIndexOutOfBoundsException - pristupa broju elementa polja koji premašuje njegovu ukupnu duljinu.
- ArrayStoreException - pokušaj dodjele elementa polja nekompatibilnog tipa.
- ClassCastException - pokušaj pogrešnog konstruiranja jedne vrste u drugu.
- IllegalArgumentException - korištenjem nevažećeg argumenta u metodi poziva.
- NegativeArraySizeException izuzetak je prilikom izrade niza negativnih veličina.
- NullPointerException - netočna upotreba nulte referencije.
- NumberFormatException - pojavljuje se kada se niz ne pretvori u broj.
- UnsupportedOperationException - operacija nije podržana.
Ovi primjeri nisu označeni Java vrsta iznimke. I tako provjerite:
- ClassNotFoundException - klasa nije pronađena.
- IllegalAcccessException - ograničavanje pristupa klasi.
- InterruptedException - prekid protoka.
- NoSuchFieldException - obavezno polje ne postoji.
Tumačenje iznimaka
Govoreći o uobičajenim iznimkama, treba napomenuti da njihovo tumačenje u tijeku razvoja može se pogrešno percipirati. Dalje, postoji mali popis koji detaljnije objašnjava kada se može dogoditi neočekivana situacija.
NullPointerException. Prvi put da se dogodi iznimka je upućivanje na referencu objekta koja je nula. To se također odnosi na metode nulte instance klase. NullPointerException se može baciti i ako je duljina polja jednaka nuli. Izbjegavajte takve situacije tako da povremeno provjeravate objekte na nuli.
ArrayIndexOutOfBoundsException. Bilo koji program ne može postojati bez upotrebe polja. Sukladno tome, često upućivanje na njih može dovesti do pogrešaka. Izuzetak se događa kada programer pokušava pristupiti elementu polja koji nije u popisu indeksa. Na primjer, tražena je vrijednost iznad ili ispod nule. Često se javlja kao posljedica činjenice da broj u polju počinje od nule.
nalazi
Iznimno rukovanje Java je moćan alat za okoliš koji uvelike olakšava rad programera i omogućuje mu stvaranje čistog i pogrešnog koda. Status i ugled tvrtke za razvojne programere ovise o tome kako glatko i stabilno aplikacija funkcionira.
Naravno, u više ili manje jednostavnim programima, puno je lakše pratiti slobodne situacije. No, u velikim automatiziranim kompleksima za više stotina tisuća linija to je moguće samo kao rezultat dugoročnog uklanjanja pogrešaka i testiranja.
Za iznimke Java, pogreške koje se pojavljuju u nekim aplikacijama, pojedina poduzeća nude nagrade kada su entuzijasti. Posebno cijenjene su one koje uzrokuju kršenje sigurnosne politike softverskog kompleksa.
- Kako instalirati Java na Windows 7
- Kako ažurirati Java na Linux i Windows operativnim sustavima?
- Prvi Java program je Hello World
- Язык программирования Java
- Obitelj motocikala "Java-350"
- `Java-634` - popularni motocikl sedamdesetih godina
- "Java 350-638" - san sovjetskog motociklista
- Cigare `Java`: opis i vrste
- Java polja žica. Razvrstavanje polja u Java. Dvodimenzionalni Java raspored
- Java: regularni izrazi, posebni znakovi
- Kako naučiti programiranje od nule na popularnim programskim jezicima
- Java integrirano razvojno okruženje
- JAR format: što treba otvoriti na računalu ili na telefonu
- Java nije instaliran: što da radim? Kako instalirati na Ubuntu?
- Java: InputStream. Ulazni tokovi
- BigInteger Java: radi s velikim brojem
- Java: rad s datotekama - pisanje, čitanje i brisanje
- Iz memorije Minecraft: što učiniti i kako se riješiti ove pogreške
- Kako omogućiti Java u Firefoxu za probleme s zaključavanjem
- Kako ukloniti java s računala? Lako je!
- Kako pisati u datoteku u Javi