Atšķirība starp izņēmumu un kļūdu

Atšķirība starp izņēmumu un kļūdu
Atšķirība starp izņēmumu un kļūdu

Video: Atšķirība starp izņēmumu un kļūdu

Video: Atšķirība starp izņēmumu un kļūdu
Video: Modem vs Router - What's the difference? 2024, Jūlijs
Anonim

Izņēmums pret kļūdu

Kad programma darbojas, var rasties neparedzēta darbība. Tas var būt izņēmumu vai kļūdu dēļ. Izņēmumi ir notikumi, kas var traucēt normālu programmas plūsmu. Kļūdas ir apstākļi, kurus var uzskatīt par neatgriezeniskiem. Izņēmumi galvenokārt ir saistīti ar pašu lietojumprogrammu, savukārt kļūdas ir saistītas ar sistēmu, kurā programma darbojas.

Kas ir izņēmums?

Izņēmums ir notikums, kas var traucēt normālu programmas plūsmu. Nosaukuma izņēmums nāk no “ārkārtas notikuma”. Izņēmuma izņemšana ir izņēmuma objekta izveides process un tā nodošana izpildlaika sistēmai. Izņēmuma objekts tiek izveidots ar metodi, kurā notika izņēmums. Izņēmuma objekts satur noderīgu informāciju, piemēram, izņēmuma veidu un aprakstu. Kad izpildlaika sistēma saņem izņēmuma objektu, tā mēģinās atrast kādu, kas to apstrādās izsaukuma stekā, šķērsojot to apgrieztā secībā (kādā tika izsauktas metodes). Izsaukumu steks ir sakārtots metožu saraksts, kuras tika izsauktas pirms metodes, kurā notika izņēmums. 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 atbilstošu apdarinātāju (t.i., izņēmuma veids atbilst veidam, kuru var apstrādāt), tā nodos izņēmuma objektu apdarinātājam. To sauc par izņēmuma noķeršanu. Tomēr, ja izņēmumu nevar apstrādāt, programma tiks pārtraukta. Java versijā izņēmumi tiek mantoti no “Throwable class”. NullPointerException un ArrayIndexOutOfBoundsException ir divi izplatīti Java izņēmumi.

Kas ir kļūda?

Kļūda ir stāvoklis, ko var uzskatīt par neatgriezenisku, piemēram, programmai, kurai nepieciešams lielāks atmiņas apjoms, nekā ir pieejams. Šīs kļūdas nevar apstrādāt izpildlaikā. Ja rodas kļūda, programma tiks pārtraukta. Programmā Java kļūdas tiek mantotas no Throwable klases. Kļūdas parasti nozīmē nopietnas problēmas, kuras programmētājam (vai lietojumprogrammai) nevajadzētu mēģināt uztvert. Kļūdas ir vienkārši neparasti apstākļi, kuru rašanās normālos apstākļos nekad nav sagaidāms, un tāpēc tie nav paredzēti. Piemēram, OutOfMemoryError, StackOverflowError un ThreadDead ir šādas kļūdas. Metodēm nekad nevajadzētu būt kļūdu apstrādātājiem.

Kāda ir atšķirība starp izņēmumu un kļūdu?

Gan kļūdas, gan izņēmumi ir nevēlami gadījumi programmas izpildes laikā. Tomēr tiem ir būtiskas atšķirības. Programmētājs var paredzēt izņēmumus, savukārt kļūdu ir grūti paredzēt. Izņēmumus var atzīmēt vai neatzīmēt. Taču kļūdas vienmēr netiek pārbaudītas. Izņēmumi parasti norāda uz programmētāja izraisītu kļūdu. Tomēr kļūdas rodas sistēmas kļūdas vai resursa neatbilstošas izmantošanas dēļ. Tāpēc izņēmumi ir jārisina lietojumprogrammas līmenī, savukārt kļūdas jārūpējas sistēmas līmenī (tikai, ja iespējams). Pēc izņēmuma apstrādes jūs garantējat atgriezties pie parastās programmas plūsmas. Bet pat tad, ja tiek pieķerta kļūda, programmētājs var nezināt, kā ar to rīkoties. Atšķirībā no tradicionālās kļūdu apstrādes, izņēmumi ļauj atdalīt kļūdu apstrādes kodu no parastā koda.

Ieteicams: