"Gusto kong sabihin sa iyo nang kaunti tungkol sa kung paano gumagana ang mga pagbubukod . Ang halimbawa sa ibaba ay dapat magbigay sa iyo ng magaspang na ideya kung ano ang mangyayari:"

Code na gumagamit ng mga exception:
class ExceptionExampleOriginal
{


    public static void main(String[] args)
    {
        System.out.println("main begin");
        try
        {
            System.out.println("main before call");

            method1();



            System.out.println("main after call");
        }
        catch (RuntimeException e)
        {


            String s = e.getMessage();
            System.out.println(s);
        }
        System.out.println("main end");
    }

    public static void method1()
    {
        System.out.println("method1 begin");
        method2();

        System.out.println("method1 end");
    }

    public static void method2()
    {
      System.out.println("method2");
      String s = "Message: Unknown Exception";
      throw new RuntimeException(s);

    }
}
Tinatayang representasyon ng kung ano ang mangyayari
public class ExceptionExample
{
    private static Exception exception = null;

   public static void main(String[] args)
    {
        System.out.println("main begin");

       
        System.out.println("main before call");

        method1();

        if (exception == null)
        {
            System.out.println("main after call");
        }
        else if (exception instanceof RuntimeException)
        {
            RuntimeException e = (RuntimeException) exception;
            exception = null;
            String s = e.getMessage();
            System.out.println(s);
        }
        System.out.println("main end");
    }

    public static void method1()
    {
        System.out.println("method1 begin");
        method2();
        if (exception != null) return;
        System.out.println("method1 end");
    }

    public static void method2()
    {
        System.out.println("method2");
        String s = "Message: Unknown Exception";
        exception = new RuntimeException(s);
        return;
    }
}

"Ako ay ganap na nawala."

"Sige. Let me explain what's going on."

"Sa halimbawa sa kaliwa, tinatawagan namin ang ilang mga pamamaraan nang sunud-sunod. Sa method2, sinasadya naming gumawa at magtapon ng exception (gumawa kami ng error)."

"Ang halimbawa sa kanan ay nagpapakita kung ano ang nangyayari."

"Tingnan ang method2. Sa halip na lumikha ng isang pagbubukod, lumikha kami ng isang RuntimeExceptionbagay, i-save ito sa static na variable exception, at pagkatapos ay agad na lumabas sa pamamaraan gamit ang isang returnpahayag."

"Sa method1, pagkatapos tumawag method2, sinusuri namin kung mayroong exception. Kung may exception, pagkatapos ay method1magtatapos kaagad. Ang pagsusuring tulad nito ay hindi direktang ginagawa pagkatapos ng bawat (!) method na tawag sa Java."

"Wow!"

"Wow tama na."

"Sa kanang column, ginamit ko ang pangunahing paraan upang ipakita ang humigit-kumulang kung ano ang mangyayari kapag ang isang exception ay nahuli gamit ang isang try-catch construct. Kung walang exception, ang lahat ay patuloy na tumatakbo tulad ng inaasahan. Kung mayroong isang exception at ito ay ang parehong uri na tinukoy sa catch statement, pagkatapos ay hinahawakan namin ito."

"Anong ibig sabihin throw at instanceof ibig sabihin? "

"Tingnan mo ang huling linya: throw new RuntimeException(s);. Ganito ka lumikha at magtapon ng exception. Hindi pa namin gagawin iyon. Halimbawa lang iyon."

"Ginagamit namin a instanceof Bupang suriin kung ang object aay uri B, ibig sabihin , kung ang object na tinutukoy ng variable exception ay RuntimeException. Ito ay isang boolean na expression."

"I think I got it. Halos."