"Size istisnaların nasıl çalıştığından biraz bahsetmek istiyorum . Aşağıdaki örnek, size ne olduğu hakkında kabaca bir fikir verecektir:"

İstisnaları kullanan kod:
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);

    }
}
Ne olduğunun yaklaşık gösterimi
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;
    }
}

"Tamamen kayboldum."

"Pekala. Neler olduğunu açıklayayım."

"Soldaki örnekte art arda birkaç yöntem çağırıyoruz. 'da method2kasıtlı olarak bir istisna oluşturup atıyoruz (bir hata oluşturuyoruz).

"Sağdaki örnek neler olduğunu gösteriyor."

"Bakın method2. Bir istisna oluşturmak yerine, bir nesne oluşturuyoruz RuntimeException, onu statik değişkene kaydediyoruz ve ardından bir ifade exceptionkullanarak yöntemden hemen çıkıyoruz ."return

"'de method1çağrıldıktan sonra bir istisna olup olmadığını method2kontrol ederiz . İstisna varsa method1hemen biter. Java'da her(!) metod çağrısından sonra dolaylı olarak böyle bir kontrol yapılır."

"Vay!"

"Vay canına."

"Sağ sütunda, try-catch yapısı kullanılarak bir istisna yakalandığında yaklaşık olarak ne olduğunu göstermek için ana yöntemi kullandım. İstisna yoksa, o zaman her şey beklendiği gibi çalışmaya devam eder. catch deyiminde belirtilen türle aynıysa, o zaman onu hallederiz."

"Ne demek throw ve ne instanceof demek? "

"Son satıra bakın: throw new RuntimeException(s);. Bu şekilde bir istisna oluşturup atarsınız. Bunun üzerinde henüz çalışmayacağız. Bu sadece bir örnekti."

a instanceof B" nesnenin atüründe olup olmadığını B, yani istisna değişkeni tarafından başvurulan nesnenin bir RuntimeException olup olmadığını kontrol etmek için kullanırız . Bu bir boole ifadesidir."

"Sanırım anladım. Neredeyse."