Paano gumagana ang multi-catch - 1

"Ilan pang kawili-wiling mga aralin. Naku, gustung-gusto kong magturo!"

"Gusto kong sabihin sa iyo ang tungkol sa kung paano gumagana ang maraming catch blocks. Napakasimple nito: kapag may mga exceptions na nangyari sa isang try block, ang execution ay lilipat sa unang catch block."

"Kung ang isang uri na ipinahiwatig sa mga panaklong ng catch block ay tumutugma sa uri ng itinapon na exception, pagkatapos ay magsisimula ang pagpapatupad sa loob ng bloke na iyon. Kung hindi, lilipat tayo sa susunod na catch block, kung saan ang parehong pagsusuri ay isinasagawa."

"Kung maubusan tayo ng mga catch block at hindi nahuli ang exception, ito ay ibabalik, at ang kasalukuyang paraan ay magwawakas nang abnormal."

"I see. Ang catch block na kasabay ng exception type ay ang isasagawa."

"Oo, tama. Gayunpaman, sa katotohanan ito ay medyo mas kumplikado. Ang mga klase ay maaaring magmana ng iba pang mga klase. Kung ang isang klase ng Baka ay nagmamana ng klase ng Hayop, ang bagay na Baka ay maaaring i-reference hindi lamang ng isang variable ng Baka, kundi pati na rin ng isang variable ng Hayop. "

"At?"

"Dahil ang lahat ng exception ay nagmamana ng Exception o RuntimeException (na nagmamana rin ng Exception ), maaari pa rin silang mahuli gamit ang 'catch ( Exception e)' o ' catch (RuntimeException e) '."

"At?"

"Maaari tayong gumawa ng dalawang konklusyon. Una, maaari mong gamitin ang 'catch (Exception e)' para mahuli ang anumang exception. Pangalawa, mahalaga ang pagkakasunud-sunod ng catch blocks. "

"Narito ang ilang mga halimbawa:"

"Ang ArithmeticExceptionmangyayari pagkatapos nating hatiin sa 0 ay mahuhuli sa pangalawang catch block."

Code
try
{
    System.out.println("Before calling method1.");
    int a = 1 / 0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
    System.out.println("Division by zero. Exception has been caught.");
}
catch (Exception e)
{
    System.out.println("Any other errors. Exception has been caught.");
}

"Sa halimbawa sa ibaba, ang ArithmeticExceptionay mahuhuli sa unang catch block, dahil ang lahat ng mga exception ay nagmamana ng Exception, ibig sabihin, Exceptionsumasaklaw sa lahat ng mga exception. "

Code
try
{
    System.out.println("Before calling method1.");
    int a = 1/0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (Exception e)
{
    System.out.println("Any other errors. Exception has been caught.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
    System.out.println("Divided by zero. Exception has been caught.");
}

"Sa halimbawa sa ibaba, ArithmeticExceptionhindi mahuhuli. Ibabalik ito sa paraan ng pagtawag."

Code
try
{
    System.out.println("Before calling method1.");
    int a = 1/0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}

"Medyo nilinaw niyan. Ang mga pagbubukod na ito ay hindi ang pinakamadaling paksa."

"Mukhang ganoon lang. Sila talaga ang isa sa pinakasimpleng bagay sa Java."

"Hindi ko alam kung matutuwa ba ako o malulungkot tungkol doon..."