"Ah. Andyan ka pala. Kanina pa kita hinahanap."

"May nangyari ba?"

"Hindi, pero nag-aaral pa tayo."

"OK. Nakikinig ako."

"Gusto kong sabihin sa iyo ang ilang higit pang bagay tungkol sa mga pagbubukod:"

"Sa Java 7, ang try-catch construct ay bahagyang pinalawig sa pamamagitan ng pagdaragdag ng maramihang catch blocks. Tingnan ang halimbawang ito:"

Java 5
try
{
  …
}
 catch (IOException ex)
{
 logger.log(ex);
 throw ex;
}
 catch (SQLException ex)
{
 logger.log(ex);
 throw ex;
}
Java 7
try
{
  …
}
 catch (IOException | SQLException ex)
{
 logger.log(ex);
 throw ex;
}

"Kaya ngayon maaari ba tayong sumulat ng maraming mga pagbubukod na pinaghihiwalay ng mga operator ng OR ('|' ay binary OR)?"

"Tama. Di ba convenient yun?"

"Hmm. Pero ano ang magiging object ng exception sa loob ng catch block?"

"Pagkatapos ng lahat, ang isang IOException ay may mga pamamaraan nito, at ang isang SQLException ay may mga pamamaraan nito."

"Ang uri ng pagbubukod ay ang uri ng kanilang karaniwang ninuno."

"Ah. Sa madaling salita, ito ay malamang na Exeption o RuntimeException . Kung gayon bakit hindi na lang isulat ang catch(Exception e)?"

"Minsan kapag humahawak ng mga error nang paisa-isa, madaling pagsama-samahin ang mga ito, pagsusulat ng ilang mga error sa isang log, pag-rethrowing ng iba, at paghawak ng iba sa ibang paraan."

"Sa madaling salita, ang pamamaraan na ito ay kinikilala bilang paglutas ng problema ng mga duplicate na catch block para sa paghawak ng iba't ibang mga error."

"Ah. Naiintindihan ko. Salamat, Ellie."

"Hindi lang iyon. Gusto kong sabihin sa iyo ng kaunti pa ang tungkol sa finally block."

"Tulad ng malamang na alam mo na, ang block na ito ay palaging isinasagawa."

"At kapag sinabi kong palagi, ang ibig kong sabihin ay talagang palaging ."

"Halimbawa:"

Halimbawa gamit ang wakas
try
{
 return 1;
}
 finally
{
 return 0;
}

"Narito mayroong isang pagbabalik sa bloke ng pagsubok , at isang pagbabalik sa panghuling bloke. Kaya ang halaga ng pagbabalik ng pamamaraang ito ay ang numero 0."

"Ang pangwakas na block ay isasagawa kahit na ano ang mangyari. At ang return statement nito ay na-overwrite ang ibang return value na may sarili nitong halaga."

"Nakita ko."

"Gayunpaman, ang isang pamamaraan ay maaaring magbalik ng isang halaga o magtapon ng isang pagbubukod. "

"Kaya, kung ang isang halaga ay ibinalik sa isang bloke ng pagsubok, ngunit ang panghuling bloke ay naghagis ng isang pagbubukod , kung gayon ang resulta ay isang pagbubukod . "

"Paano kung ang isang exception ay itinapon sa try block ngunit ang panghuli block ay may return statement?"

"Kung gayon ay parang gumana nang maayos ang pamamaraan at ibinalik ang halaga sa pahayag ng pagbabalik.

Halimbawa Resulta
try
{
 return 1;
}
 finally
{
 return 0;
}
0
try
{
 return 1;
}
 finally
{
 throw new RuntimeException();
}
RuntimeException
try
{
 throw new RuntimeException();
}
 finally
{
 return 0;
}
0
try
{
 throw new RuntimeException();
}
 finally
{
 throw new IOException();
}
IOException

"Ang tanging dahilan kung bakit ang panghuling paraan ay maaaring hindi maisakatuparan ay ang agarang pagwawakas ng programa sa pamamagitan ng isang tawag sa System.exit(); pamamaraan."

Halimbawa
try
{
 System.exit(0);
 return 1;
}
 finally
{
 return 0;
}

"Nakita ko."

"Tandaan na ang lahat ng mga paksang ito ay karaniwang tinatanong tungkol sa mga panayam, kaya makabubuti para sa iyo na maunawaan at tandaan ang mga ito."