Pagkakaiba sa Pagitan ng Exception at Error

Pagkakaiba sa Pagitan ng Exception at Error
Pagkakaiba sa Pagitan ng Exception at Error

Video: Pagkakaiba sa Pagitan ng Exception at Error

Video: Pagkakaiba sa Pagitan ng Exception at Error
Video: Modem vs Router - What's the difference? 2024, Nobyembre
Anonim

Exception vs Error

Ang hindi inaasahang gawi ay tiyak na magaganap kapag tumatakbo ang isang programa. Ito ay maaaring dahil sa mga pagbubukod o mga pagkakamali. Ang mga pagbubukod ay mga kaganapan, na maaaring makagambala sa normal na daloy ng programa. Ang mga error ay mga kundisyon na maaaring ituring na hindi na mababawi. Ang mga pagbubukod ay kadalasang nauugnay sa mismong application, habang ang mga error ay nauugnay sa system kung saan tumatakbo ang program.

Ano ang Exception?

Ang Exception ay isang kaganapan, na maaaring makaistorbo sa normal na daloy ng programa. Ang pagbubukod ng pangalan ay nagmula sa "pambihirang kaganapan". Ang paghahagis ng exception ay ang proseso ng paglikha ng exception object at ibigay ito sa runtime system. Ang object ng pagbubukod ay nilikha ng pamamaraan kung saan naganap ang pagbubukod. Exception object ay naglalaman ng kapaki-pakinabang na impormasyon tulad ng uri at paglalarawan ng exception. Kapag natanggap ng runtime system ang exception object, susubukan nitong maghanap ng taong hahawak nito sa loob ng call stack sa pamamagitan ng pagtawid nito sa reverse order (kung saan tinawag ang mga pamamaraan). Ang call stack ay ang nakaayos na listahan ng mga pamamaraan, na tinawag bago ang pamamaraan kung saan naganap ang pagbubukod. Ang runtime system ay matagumpay kung ito ay nakahanap ng isang paraan na may exception handler. Ang Exception handler ay isang bloke ng code na maaaring opisyal na pangasiwaan ang nasabing exception. Kung nakahanap ang runtime system ng naaangkop na handler (ibig sabihin, ang uri ng exception ay tumutugma sa uri na maaaring pangasiwaan), ipapasa nito ang exception object sa handler. Ito ay tinatawag na catching the exception. Gayunpaman, kung ang pagbubukod ay hindi mahawakan, ang programa ay magwawakas. Sa Java, ang mga exception ay namamana mula sa ‘Throwable class.’ Ang NullPointerException at ArrayIndexOutOfBoundsException ay dalawang karaniwang exception sa Java.

Ano ang Error?

Ang error ay isang kundisyon na maaaring ituring na hindi na mababawi gaya ng program na nangangailangan ng dami ng memory na mas malaki kaysa sa magagamit. Ang mga error na ito ay hindi maaaring pangasiwaan sa runtime. Kung may naganap na error, magwawakas ang program. Sa Java, ang mga error ay namamana mula sa Throwable class. Ang mga error ay karaniwang kumakatawan sa mga seryosong problema na hindi dapat subukan ng programmer (o ang application) na mahuli. Ang mga error ay hindi normal na kundisyon, na hindi inaasahang mangyayari sa ilalim ng normal na mga pangyayari, at samakatuwid ay hindi kailanman nahuhulaan. Halimbawa, ang OutOfMemoryError, StackOverflowError at ThreadDead ay mga ganitong error. Ang mga pamamaraan ay hindi dapat magkaroon ng mga humahawak para sa mga error.

Ano ang pagkakaiba ng Exception at Error?

Ang parehong mga error at exception ay hindi gustong mangyari sa panahon ng pagpapatupad ng isang programa. Gayunpaman, mayroon silang mga pangunahing pagkakaiba. Ang mga pagbubukod ay maaaring mahulaan ng programmer, habang ang isang error ay mahirap hulaan. Maaaring lagyan ng check o alisan ng check ang mga pagbubukod. Ngunit ang mga error ay palaging walang check. Ang mga pagbubukod ay karaniwang nagpapahiwatig ng isang error na dulot ng programmer. Gayunpaman, ang mga error ay nangyayari dahil sa isang error sa system o isang hindi naaangkop na paggamit ng isang mapagkukunan. Samakatuwid, ang mga pagbubukod ay dapat pangasiwaan sa antas ng aplikasyon, habang ang mga error ay dapat pangalagaan sa antas ng system (kung maaari lamang). Pagkatapos mahawakan ang isang exception, ikaw ay garantisadong babalik sa normal na daloy ng programa. Ngunit kahit na ang isang error ay nahuli, ang programmer ay maaaring hindi alam kung paano pangasiwaan ito sa unang lugar. Hindi tulad ng tradisyunal na paghawak ng error, pinapayagan ng mga exception ang paghihiwalay ng error-handling code mula sa regular na code.

Inirerekumendang: