Kas ir Java izņēmums?
Java izņēmums ir notikums, kas pārtrauc programmas instrukciju izpildi un traucē normālu programmas izpildes plūsmu. Tas ir objekts, kas aptver kļūdas notikumu informāciju, kas radusies metodē, un tā tiek nodota izpildlaika sistēmai. Java izņēmumus galvenokārt izmanto, lai norādītu dažāda veida kļūdu nosacījumus.
Šajā apmācībā jūs uzzināsiet
- Kas ir izņēmums?
- Kāpēc mums vajadzīgs izņēmums?
- Kā rīkoties ar izņēmumu
- Izmēģiniet Catch Block
- Java izņēmuma klases hierarhija
- Java beidzot bloķēt
Ir divu veidu kļūdas:
- Apkopot laika kļūdas
- Izpildlaika kļūdas
Kompilēšanas laika kļūdas atkal var klasificēt divos veidos:
- Sintakses kļūdas
- Semantiskās kļūdas
Sintakses kļūdu piemērs:
Deklarēšanas vietā
int a;
jūs kļūdaini paziņojāt, ka tas in a;
, kurš sastādītājs izmetīs kļūdu.
Piemērs: Jūs esat deklarējis mainīgo
int a;
un pēc dažām koda rindiņām jūs atkal deklarējat veselu skaitli kā int a;
. Visas šīs kļūdas tiek izceltas, sastādot kodu.
Izpildlaika kļūdu piemērs
Izpildlaika kļūda tiek dēvēta par kļūdu Izņēmumi . Tas ir jebkurš notikums, kas pārtrauc normālu programmas izpildes plūsmu.
Izņēmumu piemērs ir aritmētiskais izņēmums, Nullpointer izņēmums, Sadalīt ar nulli izņēmums utt.
Java izņēmumi ir kaut kas, ko izstrādātāji nevar kontrolēt.
Noklikšķiniet šeit, ja videoklips nav pieejams
Kāpēc mums vajadzīgs izņēmums?
Pieņemsim, ka esat kodējis programmu, lai piekļūtu serverim. Kamēr izstrādājāt kodu, viss strādāja labi.
Faktiskās ražošanas laikā serveris nedarbojas. Kad jūsu programma mēģināja tai piekļūt, tiek parādīts izņēmums.
Kā rīkoties ar izņēmumu
Līdz šim mēs esam redzējuši, ka izņēmums ir ārpus izstrādātāja kontroles. Bet vainot koda kļūmi vides jautājumos nav risinājums. Jums nepieciešama stingra programmēšana, kas rūpējas par ārkārtas situācijām. Šāds kods ir pazīstams kā izņēmumu apstrādātājs.
Mūsu piemērā laba izņēmumu apstrāde būtu, ja serveris nedarbojas, izveidojiet savienojumu ar rezerves serveri.
Lai to ieviestu, ievadiet kodu, lai izveidotu savienojumu ar serveri (izmantojot tradicionālos nosacījumus ja un vēl).
Jūs pārbaudīsit, vai serveris nedarbojas. Ja jā, uzrakstiet kodu, lai izveidotu savienojumu ar rezerves serveri.
Šāda koda organizēšana, izmantojot cilni "ja" un "cits", nav efektīva, ja jūsu kodam ir jāizstrādā vairāki Java izņēmumi.
class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}
Izmēģiniet Catch Block
Java nodrošina iebūvētu ārkārtas apstrādi.
- Parastais kods nonāk TRY blokā.
- Izņēmumu apstrādes kods nonāk blokā CATCH
Mūsu piemērā TRY blokā būs kods, lai izveidotu savienojumu ar serveri. CATCH blokā būs kods, lai izveidotu savienojumu ar rezerves serveri.
Gadījumā, ja serveris darbojas, kods CATCH blokā tiks ignorēts. Gadījumā, ja serveris nedarbojas, tiek izvirzīts izņēmums, un kods bloķēšanas blokā tiks izpildīts.
Tātad šādi Java tiek rīkots ar izņēmumu.
Sintakse, lai izmantotu “try & catch”
try{statement(s)}catch (exceptiontype name){statement(s)}
Piemērs
1. darbība. Nokopējiet šo kodu redaktorā
class JavaException {public static void main(String args[]){int d = 0;int n = 20;int fraction = n/d;System.out.println("End Of Main");}}
2. solis) Saglabājiet failu un apkopojiet kodu. Palaidiet programmu, izmantojot komandu Java JavaException
3. solis) Aritmētiskais izņēmums - dalīt ar nulli tiek parādīts zemāk līnijai # 5, un rinda # 6 nekad netiek izpildīta
4. solis. Tagad apskatīsim, kā izmēģināt un noķert palīdzēs mums tikt galā ar šo izņēmumu. Izņēmumu, kas izraisa koda rindiņu, mēs ievietosim mēģinājuma blokā, kam seko ķeršanas bloks. Kopējiet šo kodu redaktorā.
class JavaException {public static void main(String args[]) {int d = 0;int n = 20;try {int fraction = n / d;System.out.println("This line will not be Executed");} catch (ArithmeticException e) {System.out.println("In the catch Block due to Exception = " + e);}System.out.println("End Of Main");}}
5. solis) Saglabājiet, kompilējiet un palaidiet kodu. Jūs saņemsiet šādu izvadi
Kā jūs novērojat, izņēmums tiek apstrādāts, un tiek izpildīta arī pēdējā koda rinda. Ņemiet vērā arī to, ka 7. līnija netiks izpildīta, jo , tiklīdz tiek palielināts izņēmums, vadības plūsma pāriet uz bloķēšanas bloku.
Piezīme: AritmeticException objekts "e" satur informāciju par notikušo izņēmumu, kas var būt noderīgs, veicot atkopšanas darbības.
Java izņēmuma klases hierarhija
Pēc viena nozvejas paziņojuma izpildes citi tiek apieti, un izpilde turpinās pēc try / catch bloka. Ligzdotie ķeršanas bloki atbilst izņēmuma hierarhijai.- Visas Java izņēmumu klases paplašina klasi 'Throwable'. Throwable ir divas apakšklases, Error un Exception
- Kļūdu klase definē izņēmumu vai problēmas, kuras mūsu programmā nav paredzamas normālos apstākļos, piemēram, Atmiņas kļūda, Aparatūras kļūda, JVM kļūda utt.
- Izņēmuma klase apzīmē izņēmumus, kurus var apstrādāt mūsu programma, un mūsu programmu var atgūt no šī izņēmuma, izmantojot mēģinājumu un aizķeršanas bloku
- Izpildes laika izņēmums ir izņēmuma klases apakšklase. Šāda veida izņēmums ir izņēmums, kas notiek izpildes laikā un kuru nevar izsekot sastādīšanas laikā. Lielisks tā paša piemērs ir dalīt ar nulles izņēmumu vai nulles rādītāja izņēmumu utt
- IO izņēmums tiek ģenerēts ievades un izvades darbību laikā
- Pārtraukti izņēmumi Java tiek ģenerēti vairāku pavedienu laikā.
1. darbība. Nokopējiet šo kodu redaktorā.
class JavaException {public static void main(String args[]) {try {int d = 1;int n = 20;int fraction = n / d;int g[] = {1};g[20] = 100;}/*catch(Exception e){System.out.println("In the catch block due to Exception = "+e);}*/catch (ArithmeticException e) {System.out.println("In the catch block due to Exception = " + e);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("In the catch block due to Exception = " + e);}System.out.println("End Of Main");}}
2. solis) Saglabājiet failu un apkopojiet kodu. Palaidiet programmu, izmantojot komandu Java JavaException .
3. solis . Tiek ģenerēts ArrayIndexOutOfBoundsException. Mainiet int d vērtību uz 0. Saglabājiet, sastādiet un palaidiet kodu.
4. solis. Jāizveido ArithmeticException.
5. solis) Nekomentējiet 10. rindiņu līdz 12. rindiņai. Saglabājiet, kompilējiet un palaidiet kodu.
6. solis) Kompilācijas kļūda? Tas ir tāpēc, ka Izņēmums ir ArithmeticException Exception bāzes klase. Jebkuru ArithmeticException izvirzīto izņēmumu var apstrādāt arī Exception klase. Tātad ArithmeticException uztveršanas bloks nekad nesaņems iespēju tikt izpildīts, kas padara to lieku. Tāpēc sastādīšanas kļūda.
Java beidzot bloķēt
Pēdējais bloks tiek izpildīts neatkarīgi no mēģinājuma blokā izvirzītā izņēmuma . Tas nav obligāti lietojams kopā ar mēģinājuma bloku.
try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}
Gadījumā, ja mēģinājuma blokā tiek izvirzīts izņēmums, visbeidzot, bloks tiek izpildīts pēc tam, kad izpildīts bloķēšanas bloks.
Piemērs
1. darbība. Nokopējiet šo kodu redaktorā.
class JavaException {public static void main(String args[]){try{int d = 0;int n =20;int fraction = n/d;}catch(ArithmeticException e){System.out.println("In the catch block due to Exception = "+e);}finally{System.out.println("Inside the finally block");}}}
2. solis. Saglabājiet, kompilējiet un palaidiet kodu.
3. solis) Paredzētā izlaide. Visbeidzot, bloķēšana tiek izpildīta, pat ja tiek izvirzīts izņēmums.
4. solis. Mainiet mainīgā lieluma d = 1. Saglabājiet, apkopojiet un palaidiet kodu un novērojiet izvadi. Veidlapas apakšdaļa
Kopsavilkums :
- Izņēmums ir palaist laika kļūda, kas pārtrauc normālu plūsmu programmas execution.Disruption izpildes programmas laikā tiek dēvēta par kļūdu vai izņēmuma.
- Kļūdas tiek klasificētas divās kategorijās
- Kompilēšanas laika kļūdas - sintakses kļūdas, semantiskās kļūdas
- Izpildlaika kļūdas - izņēmums
- Stabila programmai vajadzētu rīkoties visi izņēmumi un turpināt ar savu normālo plūsmu programmas izpildi. Java nodrošina iebūvētu ārkārtas apstrādes metodi
- Izņēmumu apstrādātājs ir kodu kopums, kas apstrādā izņēmumu . Izņēmumus var apstrādāt Java, izmantojot try & catch.
- Izmēģiniet bloku : šajā blokā tiek izmantots parasts kods.
- Noķeršanas bloks : ja parastā kodā ir kļūda, tas nonāks šajā blokā