"Hi, Amigo!"

"Hi, Ellie! Kamusta ang buhay?"

"Excellent, thank you. Kamusta?"

"Magaling, kaninang umaga maraming bagong bagay ang ipinaliwanag sa akin."

"Well, that's great. Hindi ka ba napapagod?"

"Oo, ayan. Medyo pagod na ako."

"Kung ganoon ay sinuwerte ka lang. Gusto kong mag-cover ng isang malaki, kumplikadong paksa ngayon, ngunit sa huling minuto ay nagbago ang isip ko at nagpasya na mag-cover ng maliit, madali."

"Maliit at madali? Handa na ako."

"Ngayon ay susuriin natin nang detalyado ang paksa ng Mga Pagbubukod ."

"Error handling ba ang pinag-uusapan mo?"

"Hindi mo dapat isipin ang mga pagbubukod bilang mga error. Ang mga pagbubukod ay mas katulad ng mga ulat na 'may nangyaring hindi inaasahan'. Batay sa mga ulat na ito, maaari kang magmungkahi ng mga alternatibong pagkilos."

"Lahat ito ay tungkol sa mga pamamaraan.  Kapag tumawag ka ng isang pamamaraan, nangangako itong gagawin kung ano ang tinawag nitong gawin. "

"Kapag ang isang pamamaraan, sa anumang kadahilanan, ay hindi magawa ang kung ano ang tinatawag na gawin, kailangan nitong ipaalam sa tumatawag."

"Sa madaling salita, ang pinakamasamang bagay na maaaring mangyari ay para sa isang paraan upang hindi gawin ang trabaho nito at hindi sabihin sa sinuman ang tungkol dito. Wala nang posibleng mas masahol pa kaysa doon. Nawawalan ka ng kontrol sa sitwasyon kapag nangyari iyon. "

"Kapag bagong programmer ka, parang tatawag ka lang ng mga method at siguradong gagawin nila ang ipinagagawa mo sa kanila."

"Kapag ikaw ay isang bihasang programmer, alam mo na maaaring mayroong dose-dosenang mga salik na makakaapekto sa kakayahan ng isang pamamaraan na gawin ang trabaho nito, at na mayroong maraming mga kaso na maaaring pumigil sa isang paraan sa pagkumpleto ng trabaho nito."

"Mula sa pananaw ng programmer, ito ay isang libong beses na mas mahusay kung ang isang programa ay magwawakas kapag ito ay nakatagpo ng isang error kaysa sa kung ang programa ay nakatagpo ng isang error at pagkatapos ay patuloy na gumagana (hindi tama) nang hindi napagtatanto ng user kung ano ang nangyari."

"Kaya ang program na nagpapakita ng mali ay maaaring mas masahol pa kaysa sa kung ang programa ay nagsara at nawala ang lahat ng data?"

"Ano ang nagpaisip sa iyo na ang programa ay nagpapakita lamang ng isang bagay na hindi tama? Marahil ang mga programa ay may maraming mga bug at ang lahat ng iyong data ay hindi na mababawi pa? Ipagpalagay na nag-type ka ng teksto sa loob ng 3 oras, ngunit wala sa mga ito ang mase-save dahil isang error na nangyari pagkalipas lamang ng dalawang minuto."

"Kapag ang isang baguhang programmer ay nakatagpo ng mga pagbubukod, siya ay nadidismaya."

"Ngunit sa katotohanan, ang mga pagbubukod ay nagbubunyag ng lahat ng posibleng mga sitwasyon na dapat niyang hulaan ngunit hindi."

"Maaari mong piliin na huwag pangasiwaan ang mga eksepsiyon at iyon ay gagawin kang isang masamang programmer. Ngunit kung ang iyong mga pamamaraan ay hindi nagtatapon ng mga eksepsiyon, kung gayon ikaw ay hindi programmer sa lahat — dahil nabigo kang maunawaan ang simpleng katotohanang ito:"

"Ang isang pamamaraan ay maaaring gawin kung ano ang isinulat na gawin, o ito ay nagtatapon ng isang pagbubukod. Walang pangatlong opsyon!"

"Okay, naniniwala ako sa iyo. I promise to use exceptions."

"Mahusay. Pagkatapos ay hayaan mong sabihin ko sa iyo ang tungkol sa hierarchy ng mga pagbubukod:"

Exception hierarchy, mga error - 1

"Ang exception hierarchy ay nakabatay sa apat na klase."

"Ang pinakamababang base class ay Throwable ."

"Ang mga klase ng Error at Exception ay nagmamana nito."

" Ang RuntimeException ay namamana ng Exception ."

"Ang klase ng Error ay ang batayang klase para sa mga error sa JVM gaya ng StackOverFlow , OutOfMemory , ..."

"Ang isang programa ay karaniwang hindi makakabawi mula sa mga naturang error, na humahantong sa ito upang wakasan."

"Sa katunayan, ano ang maaaring gawin kung walang sapat na memorya para sa programa upang magpatuloy sa pagtakbo ng normal o nagkaroon ng stack overflow?"

" Ang Exception ay ang batayang klase para sa lahat ng ordinaryong exception na itinapon ng isang program.  Ang RuntimeException ay isang espesyal na uri ng Exception na may bahagyang naiibang mga panuntunan."

"Ano sila?"

"Iyon lang ang ipapaliwanag ko ngayon."

"Tulad ng malamang na naaalala mo, ang mga pagbubukod ay nahahati sa dalawang kategorya: may check at walang check ."

"Kung ang isang pamamaraan ay naghagis ng mga naka-check na eksepsiyon, kung gayon ang paraan na tumatawag dito ay dapat na i-wrap ang tawag sa isang try-catch block. Well, iyon man o muling ihagis ang exception (sa tumatawag nito) sa pamamagitan ng malinaw na pagpahiwatig ng mga throws sa lagda ng pamamaraan."

"Ang mga panuntunan/paghihigpit na ito ay hindi nalalapat sa mga hindi na-check na exception."

"Kaya, ang lahat ng mga exception na nagmamana ng Exception ay itinuturing na may check. Maliban sa mga exception na nagmana ng RuntimeException, na itinuturing na walang check."

"Uh-huh. Naalala ko na sinabi mo sa akin ang ganyan kanina."

"Amigo! Nagtatanong sila tungkol sa exception hierarchy sa bawat interview . Uulitin ko ito — every interview . Kailangan mong malaman ang paksang ito nang perpekto."

"OK. Babasahin ko ulit lahat at aalamin ko. Salamat sa pagtulong sa akin, Ellie."