Sinuri ang Exception vs Runtime Exception
Ang Exceptions ay mga espesyal na uri ng mga 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. 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 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 ang runtime system ay nakahanap ng naaangkop na handler, 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 mga Checked Exception ay mga exception kung saan ang pangangasiwa ay ipinapatupad ng compiler. Ang mga runtime exception ay isang uri ng mga exception, na hindi sinusuri ng compiler.
Ano ang Checked Exception?
Ang Checked Exceptions ay alinman sa mga object ng class na java.lang.exception o mga subclass nito (maliban sa java.lang. RuntimeException at mga subclass nito). Ang mga naka-check na exception ay "naka-check" sa oras ng pag-compile. Nangangahulugan iyon na dapat mahuli o itapon ng programmer ang mga pagbubukod na ito, kung hindi, magrereklamo ang compile (nagdudulot ng error sa compiler). Dahil sa kadahilanang ito, maraming nasuri na mga eksepsiyon ang kilala ng mga programmer. Halimbawa, ang IOException at ang mga sub class nito ay sinusuri ang mga exception, at sa tuwing ang programmer ay nakikitungo sa pag-access o pagbabago ng isang file, ang compiler ay nagsusuri upang matiyak na ang lahat ng posibleng IOExceptions ay pinangangalagaan ng programmer.
Ano ang Runtime Exception?
Runtime Exceptions ay binubuo ng java.lang. RuntimeException at lahat ng sub class nito. Sa teoryang pagsasalita, nagsisilbi ang mga ito sa parehong layunin tulad ng mga naka-check na eksepsiyon, at maaaring itapon o pangasiwaan tulad ng naka-check na exception, ngunit ang paghawak sa mga ito ay hindi ipinapatupad ng compiler. Samakatuwid, ang mga pagbubukod sa Runtime ay kabilang sa pamilya ng mga hindi naka-check na mga pagbubukod. Ang NullPointerException, NumberFormatEception, ClassCastException at ArrayIndexOutOfBoundsException ay mga karaniwang runtime exception sa Java.
Ano ang pagkakaiba ng Checked Exception at Runtime Exception?
Bagaman, ang parehong mga naka-check na exception at runtime exception ay hindi gustong mangyari sa panahon ng pagpapatupad ng isang program, mayroon silang mga pagkakaiba. Ipinapatupad ng compiler ang checked exception handling, ngunit ang runtime exception ay hindi. Samakatuwid, ang mga naka-check na exception ay dapat na ihagis o pangasiwaan upang ang code ay mag-compile, ngunit walang ganoong pangangailangan tungkol sa runtime exception. Dahil dito, ang mga runtime exception ay nabibilang sa hindi na-check na kategorya ng mga exception kasama ng mga error.
Ang disadvantage sa mga may check na exception ay kailangang pangasiwaan ito ng programmer kahit na hindi niya alam kung paano. Kaya, kung magtapon lang ang programmer ng bagong exception nang hindi binabalot ang orihinal, mawawala ang stack trace na kabilang sa orihinal na exception. Dito magagamit ang mga pagbubukod sa runtime. Dahil ang lahat ng runtime exception ay maaaring pangasiwaan sa isang lugar, kaya ang mga programmer ay maaaring magsulat ng mas kaunting halaga ng code. Sa kabilang banda, dahil dapat mahuli ang mga nasuri na eksepsiyon, walang sorpresa para sa programmer. Palagi niyang malalaman kung aling naka-check na exception ang maaaring ihagis ng isang partikular na pamamaraan. Taliwas dito, maaaring ihagis ang iba't ibang runtime exception nang hindi nalalaman ng programmer.