1. throwoperator

Kapag ang isang pagbubukod ay nakuha ng isang catchbloke, at hanggang sa ito ay itapon sa Java machine, ito ay isang bagay lamang na nagmamana Exception(o sa halip, Throwable). Ang exception object mismo ay walang anumang mahiwagang katangian.

Ang lahat ng lohika kung paano gumagana ang mga pagbubukod ay isang espesyal na paraan lamang na kumikilos ang makina ng Java kapag ang isang pagbubukod ay itinapon dito.

Maaari mong palaging i-rethrow ang isang nahuli na exception sa Java machine. Upang gawin ito, kailangan mong gamitin ang throwoperator:

throw exception;

Halimbawa:

Code Output ng console
try
{
   int d = 2/0;
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
Caught the exception

Sa code na ito, nakakuha kami ng exception, nagpakita ng mensahe tungkol dito sa screen, at pagkatapos ay ibinalik ito.

Ang isang rethrown exception ay hindi maaaring makuha ng ibang catchmga block sa parehong tryblock.


2. Ang iyong mga pagbubukod

Sa pamamagitan ng paraan, maaari kang lumikha ng isang exception object sa iyong sarili: ito ay isang bagay lamang na ang uri ay Exceptiono isang klase na nagmamana nito. At itapon ito.

Ito ay mas madali kaysa ito tunog. Halimbawa:

Code Output ng console
try
{
   throw new RuntimeException();
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
Caught the exception

Sa halimbawa sa itaas, gumawa kami ng bagong exception object na ang uri ay RuntimeExceptionat agad itong inihagis gamit ang throwoperator.

Agad itong mahuhuli ng catchblock, dahil ang RuntimeException ay nagmamana Exception. Ang catch (Exception except)code ay nakakakuha ng mga exception object ng lahat ng klase na nagmamana ng Exceptionklase.



3. finallykeyword

Isa pang mahalagang punto. Minsan ang isang programmer ay kailangang gumawa ng ilang aksyon kahit na may eksepsiyon na naganap sa code. Halimbawa, ipagpalagay na nagbukas kami ng isang file para sa pagsusulat. Ang binuksan na file ay dapat na sarado sa pamamagitan ng pagtawag close().

try
{
   // Code where an exception might occur
}
catch(ExceptionType name)
{
   // Exception handling code
}
finally
{
   // Code that must executed no matter what happens
}

Upang maisagawa ang mga ipinag-uutos na pagkilos na ito, isa pang uri ng block ( finally) ang idinagdag sa try-catchconstruct, at sa gayon ay lumilikha ng try-catch-finallyconstruct. Mukhang ganito:

Halimbawa:

FileInputStream source = null;
try
{
   source = new FileInputStream("c:\\note.txt");
   source.read();
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
finally
{
   if (source != null)
      source.close();
}

Ang code sa finallyblock ay isasagawa sa anumang kaso, hindi alintana kung mayroong isang pagbubukod. Kahit na ang isang pagbubukod ay itinapon at hindi nahuli, ang finallyblock ay isasagawa pa rin.

Sa pamamagitan ng paraan, kung hindi mo nais na makakuha ng isang pagbubukod, ngunit kailangan mo ng isang finallybloke, gamitin ang shorthand notation para sa try-catch-finallyconstruct: isang try-finallybloke. Mukhang ganito:

try
{
   // Code where an exception might occur
}
finally
{
   // Code that must executed no matter what happens
}