Başlık: Başlangıç

    Hata oluştuğu zaman Python durur ve hata mesajı döndürür.

    try ifadesi sayesinde hata yakalanıp kodun durması engellenebilir.

    Python’da hata yakalama işlemi 4 temel öğe sayesinde gerçekleşir.

    try ifadesi ile geliştirilen kod bloğu çalıştırılabilir.

    except ile oluşabilecek hata sonrasında çalıştıracak kodları içerir.

    else ile hata oluşmaz ise çalıştırılacak kodları kapsar.

    finally try-except bloğundan bağımsız bitiminde çalışmasını sağlar.

    ÖRNEK KULLANIM:

    Sadece değer uyuşmazlığı durumuna dair hatayı yakalamak için örnek kod.

    while True:
        x = input("Bir sayı girin: ")
        if not x:
            break
        try:
            y = float(x)
        except ValueError:
            print("Geçersiz sayı")
            continue
        print(y**2)
    

    Herhangi bir hatayı yakalamak için örnek kod.

    while True:
        x = input("Bir sayı girin: ")
        if not x:
            break
        try:
            y = 1/float(x)
        except:
            print("Geçersiz sayı")
            continue
        print(y)
    

    Belirli bir tipteki birden fazla hatayı yakalamak için örnek kod.

    while True:
        x = input("Bir sayı girin: ")
        if not x:
            break
        try:
            y = 1/float(x)
        except ValueError:
            print("Geçersiz sayı")
            continue
        except ZeroDivisionError:
            print("Sıfıra bölme")
            continue
        print(y)
    

    Hata Durumu Hiyerarşisi

    Hata durumları bir nesne hiyerarşisi içinde tanımlanır. Bunların en geneli BaseException sınıfıdır; diğer daha özelleşmiş hata durumları bunlardan türetilir.

    Hata durumları hiyerarşisinin bir bölümü şöyledir (tam bir listeyi Python belgelerinde bulabilirsiniz):

    BaseException
     +-- SystemExit
     +-- KeyboardInterrupt
     +-- Exception
          +-- StopIteration
          +-- StopAsyncIteration
          +-- ArithmeticError
          |    +-- FloatingPointError
          |    +-- OverflowError
          |    +-- ZeroDivisionError
          +-- ImportError
          |    +-- ModuleNotFoundError
          +-- LookupError
          |    +-- IndexError
          |    +-- KeyError
          +-- OSError
          +-- ValueError
    

    İstisna Yakalama

    raise ifadesi ile satır içinde hata yakalanabilir.

    ÖRNEK KULLANIM:

    x = -1
    
    if x < 0:
      raise Exception("Sorry, no numbers below zero")
    
    x = "hello"
    
    if not type(x) is int:
      raise TypeError("Only integers are allowed")
    

    negatif argüman aldığında ValueError yayınlayan bir faktöriyel fonksiyonu

    def faktöryel(x):
        x = int(x)    
        if x<0:
            raise ValueError("Negatif değer")
        p = 1
        for i in range(1,x+1):
            p *= i
        return p