Atšķirība Starp Pārbaudīto Izņēmumu Un Izpildlaika Izņēmumu

Atšķirība Starp Pārbaudīto Izņēmumu Un Izpildlaika Izņēmumu
Atšķirība Starp Pārbaudīto Izņēmumu Un Izpildlaika Izņēmumu

Video: Atšķirība Starp Pārbaudīto Izņēmumu Un Izpildlaika Izņēmumu

Video: Atšķirība Starp Pārbaudīto Izņēmumu Un Izpildlaika Izņēmumu
Video: 20 товаров для автомобиля с Алиэкспресс, автотовары №32 2024, Novembris
Anonim

Pārbaudīts izņēmums pret izpildlaika izņēmumu

Izņēmumi ir īpaša veida notikumi, kas var traucēt normālu programmas plūsmu. Nosaukuma izņēmums nāk no “ārkārtas notikuma”. Izņēmuma mešana ir izņēmuma objekta izveides process un nodošana izpildlaika sistēmai. Kad izpildlaika sistēma saņem izņēmuma objektu, tā mēģinās atrast kādu, kas to apstrādā zvanu kaudzē, šķērsojot to apgrieztā secībā (kurā tika izsauktas metodes). Izpildlaika sistēma ir veiksmīga, ja tā atrod metodi ar izņēmumu apstrādātāju. Izņēmumu apstrādātājs ir koda bloks, kas var oficiāli apstrādāt minēto izņēmumu. Ja izpildlaika sistēma atrod piemērotu apdarinātāju, tā nodos izņēmuma objektu apstrādātājam. To sauc par izņēmuma ķeršanu. Tomēr, ja izņēmumu nevar apstrādāt, programma tiks pārtraukta. Java valodāizņēmumi tiek mantoti no Metamās klases. Pārbaudītie izņēmumi ir izņēmumi, ar kuriem kompilators piespiež rīkoties. Izpildes laika izņēmumi ir sava veida izņēmumi, kurus kompilators nepārbauda.

Kas ir pārbaudītais izņēmums?

Pārbaudītie izņēmumi ir vai nu klases java.lang.exception objekti, vai tā apakšklases (izņemot java.lang. RuntimeException un tā apakšklases). Pārbaudītie izņēmumi tiek “pārbaudīti” sastādīšanas laikā. Tas nozīmē, ka programmētājam ir vai nu jānoķer, vai jāizmet šie izņēmumi, pretējā gadījumā kompilācija varētu sūdzēties (izraisot kompilatora kļūdu). Šī iemesla dēļ daudzi pārbaudītie izņēmumi ir ļoti labi zināmi programmētājiem. Piemēram, IOException un tā apakšklases tiek pārbaudītas izņēmumos, un ikreiz, kad programmētājs nodarbojas ar piekļuvi failam vai tā modificēšanu, kompilators pārbauda, vai programmētājs rūpējas par visiem iespējamiem IOExceptions.

Kas ir izpildlaika izņēmums?

Izpildes laika izņēmumi sastāv no java.lang. RuntimeException un visām tās apakšklasēm. Teorētiski runājot, tiem ir tāds pats mērķis kā pārbaudītajiem izņēmumiem, un tos var izmest vai rīkoties tāpat kā pārbaudītus izņēmumus, taču kompilators neuzspiež tos apstrādāt. Tāpēc izpildlaika izņēmumi pieder nepārbaudītu izņēmumu ģimenei. NullPointerException, NumberFormatEception, ClassCastException un ArrayIndexOutOfBoundsException ir izplatīti Java izpildlaika izņēmumi.

Kāda ir atšķirība starp pārbaudīto izņēmumu un izpildlaika izņēmumu?

Lai gan gan pārbaudītie izņēmumi, gan izpildlaika izņēmumi ir nevēlami programmas izpildes laikā, tiem ir savas atšķirības. Pārbaudīto izņēmumu apstrādi veic kompilators, bet izpildlaika izņēmumi nav. Tāpēc pārbaudītie izņēmumi ir jāizmet vai jāapstrādā, lai kods varētu apkopot, taču šādas prasības attiecībā uz izpildlaika izņēmumiem nav. Līdz ar to izpildlaika izņēmumi kopā ar kļūdām pieder pie nepārbaudītu izņēmumu kategorijas.

Trūkums ar pārbaudītiem izņēmumiem ir tāds, ka programmētājam tas jārisina, pat ja viņa to nezina. Tātad, ja programmētājs vienkārši iemet jaunu izņēmumu, neiesaiņojot oriģinālu, tiks zaudēta kaudzes izsekošana, kas pieder sākotnējam izņēmumam. Šeit ir noderīgi izpildlaika izņēmumi. Tā kā visus izpildlaika izņēmumus var apstrādāt vienā vietā, tādējādi programmētāji var uzrakstīt mazāk koda. No otras puses, tā kā ir jānoķer pārbaudītie izņēmumi, programmētājs nav pārsteigums. Viņa vienmēr zinās, kuru pārbaudīto izņēmumu varētu izmest ar noteiktu metodi. Pretēji tam bez izpildītāja ziņas var izmest dažādus izpildlaika izņēmumus.

Ieteicams: