Išimtis vs klaida
Kai programa vykdoma, tai gali įvykti netikėtai. Tai gali būti dėl išimčių ar klaidų. Išimtys yra įvykiai, kurie gali sutrikdyti įprastą programos eigą. Klaidos yra sąlygos, kurios gali būti laikomos neatkuriamomis. Išimtys dažniausiai susijusios su pačia programa, o klaidos yra susijusios su sistema, kurioje veikia programa.
Kas yra išimtis?
Išimtis yra įvykis, kuris gali sutrikdyti įprastą programos eigą. Vardo išimtis kilusi iš „išskirtinio įvykio“. Išimties išmetimas yra išimties objekto sukūrimo ir perdavimo perduodant vykdymo sistemai procesas. Išimties objektas sukuriamas tokiu būdu, kuriuo atsirado išimtis. Išimties objekte yra naudingos informacijos, tokios kaip išimties tipas ir aprašymas. Kai veikimo laiko sistema gaus išimties objektą, ji bandys surasti ką nors, kas jį tvarkytų skambučių kamino viduje, sukdami jį atvirkštine tvarka (kuria metodai buvo vadinami). Skambučių rinkinys yra užsakytas metodų, kurie buvo iškviesti prieš metodą, kuriame atsirado išimtis, sąrašas. Vykdymo sistema yra sėkminga, jei ji randa metodą su išimties tvarkykle. Išimčių tvarkytojas yra kodo blokas, kuris gali oficialiai tvarkyti minėtą išimtį. Jei vykdymo laiko sistema randa tinkamą tvarkyklę (t. Y. Išimties tipas atitinka tipą, kurį galima tvarkyti), ji perduoda išimties objektą tvarkytojui. Tai vadinama išimties pagavimu. Tačiau jei išimties pašalinti negalima, programa bus nutraukta. „Java“ programoje išimtys paveldimos iš „mestos klasės“. „NullPointerException“ ir „ArrayIndexOutOfBoundsException“ yra dvi bendros „Java“ išimtys.
Kas yra klaida?
Klaida yra būklė, kuri gali būti laikoma neatitaisoma, pavyzdžiui, programai, kuriai reikia didesnės atminties, nei yra. Šios klaidos negali būti pašalintos vykdant. Jei įvyks klaida, programa baigsis. „Java“ programoje klaidos paveldimos iš „Throvable“ klasės. Klaidos paprastai reiškia rimtas problemas, kurių programuotojas (arba programa) neturėtų bandyti užfiksuoti. Klaidos yra tiesiog nenormalios sąlygos, kurių normaliomis aplinkybėmis niekada nebūna, todėl niekada nenumatoma. Pavyzdžiui, tokios klaidos yra „OutOfMemoryError“, „StackOverflowError“ ir „ThreadDead“. Metodai niekada neturėtų turėti klaidų tvarkytojų.
Kuo skiriasi išimtis ir klaida??
Tiek klaidos, tiek išimtys yra nepageidaujami įvykiai vykdant programą. Tačiau jie turi esminių skirtumų. Programuotojas gali numatyti išimtis, tuo tarpu klaidą sunku numatyti. Išimtys gali būti tikrinamos arba nežymimos. Bet klaidos visada nėra pažymėtos. Išimtys paprastai nurodo programuotojo padarytą klaidą. Tačiau klaidos atsiranda dėl sistemos klaidos ar netinkamo išteklių naudojimo. Todėl išimtys turėtų būti nagrinėjamos programos lygiu, o klaidomis turėtų būti pasirūpinta sistemos lygiu (tik jei įmanoma). Išnagrinėjus išimtį garantuojama, kad grįšite į įprastą programos eigą. Bet net jei bus pagauta klaida, programuotojas visų pirma gali nežinoti, kaip su ja elgtis. Skirtingai nuo tradicinio klaidų tvarkymo, išimtys leidžia atskirti klaidų tvarkymo kodą nuo įprasto.