Python’da Hata Yönetimi

Bu makalemizde Python dilini kullanarak yazdığımız kodları çalıştırdığımızda  bazı hataların oluşabileceğini ve bu hataların neler olduğunu, hatalar çıktığında hatayı nasıl yakalayacağımızı, hatayı nasıl kullanıcıya göstereceğimizi ve hata çıktığında programımızın çalışma zamanını durdurmadan bunu nasıl yönetebileceğimizi anlatacağız. Bir programın çalışması sırasında beklenmeyen bir hata oluşabilir. Bu hata, programın çökmesine veya yanlış sonuçlar üretmesine neden olabilir. Hata yönetimi, bu tür hataları yakalayarak programın çalışmasını durdurmadan önce uygun bir şekilde işlemesini sağlar. Python’da hata yönetimi için “try-except” blokları kullanılır. Bu bloklar, programın hata verebilecek kodlarını içerir. Try bloğu içindeki kodların çalışması sırasında bir hata oluşursa, program except bloğuna geçer ve hata mesajını burada işler. a = 10 / 0 print(a) Bu kodu yazdığımızda aşağıdaki gibi ZeroDivision hatası verir. Burada programın çalışmasını engelleyen hatayı kullanıcıya bir bilgi verecek şekilde tasarlayıp programın çalışmasının devamı sağlanır. try: a=100/0 except ZeroDivisionError: print("sıfıra bölme hatası") except: print("bir hata oluştu") Bu örnekte, try bloğu içinde sıfıra bölme hatası oluşuyor. […]

Python’da Hata Yönetimi

Bu makalemizde Python dilini kullanarak yazdığımız kodları çalıştırdığımızda  bazı hataların oluşabileceğini ve bu hataların neler olduğunu, hatalar çıktığında hatayı nasıl yakalayacağımızı, hatayı nasıl kullanıcıya göstereceğimizi ve hata çıktığında programımızın çalışma zamanını durdurmadan bunu nasıl yönetebileceğimizi anlatacağız.

Bir programın çalışması sırasında beklenmeyen bir hata oluşabilir. Bu hata, programın çökmesine veya yanlış sonuçlar üretmesine neden olabilir. Hata yönetimi, bu tür hataları yakalayarak programın çalışmasını durdurmadan önce uygun bir şekilde işlemesini sağlar.

Python’da hata yönetimi için “try-except” blokları kullanılır. Bu bloklar, programın hata verebilecek kodlarını içerir. Try bloğu içindeki kodların çalışması sırasında bir hata oluşursa, program except bloğuna geçer ve hata mesajını burada işler.

a = 10 / 0
print(a)

Bu kodu yazdığımızda aşağıdaki gibi ZeroDivision hatası verir.

Burada programın çalışmasını engelleyen hatayı kullanıcıya bir bilgi verecek şekilde tasarlayıp programın çalışmasının devamı sağlanır.

try:    
    a=100/0
except ZeroDivisionError:
    print("sıfıra bölme hatası")
except:
    print("bir hata oluştu")

Bu örnekte, try bloğu içinde sıfıra bölme hatası oluşuyor. İlk except bloğu, ZeroDivisionError hatasını yakalar ve “Sıfıra bölme hatası” mesajını yazdırır. İkinci except bloğu, başka bir hata türü için kullanılabilir ve bu durumda “Bir hata oluştu” mesajı yazdırılacaktır.

Birçok farklı hata türü vardır ve her hata türü için ayrı bir except bloğu kullanılabilir. Bu sayede program, herhangi bir hata oluştuğunda uygun bir mesaj verebilir ve hata oluştuğunda programın çökmesini önleyebilir.

Hata Türleri

Python’da birçok hata türü vardır. Bu hata türleri şunlardır:

1.SyntaxError: Python kodu yazım hatası içeriyorsa, SyntaxError hatası oluşur. Bu hata, kodun çalıştırılmasından önce ortaya çıkar.

   # Hatalı kod
print("ibrahim, atlı!"

# Doğru kod
print("ibrahim, atlı!")

2.NameError: Bir değişken veya fonksiyon tanımlanmadan kullanılmaya çalışılırsa NameError hatası oluşur. Örneğin, tanımlanmamış bir değişkene veya fonksiyona erişim denendiğinde bu hata alınır.

# Hatalı kod
print(x)

# Doğru kod
x = 5
print(x)

 

3.TypeError:  İstenen veri türüne uygun olmayan bir veri kullanıldığında TypeError hatası oluşur. Örneğin, sayı yerine bir dize kullanmaya çalıştığınızda bu hata alınır

# Hatalı kod
x = "1" + 3

# Doğru kod
x = int("1") + 3

 

4.IndexError: Bir dizi veya liste elemanına erişilmeye çalışırken belirtilen index numarası geçerli değilse IndexError hatası oluşur. Örneğin, 5 elemanlı bir listede 6. elemana erişmeye çalışırsanız bu hata alınır.

# Hatalı kod
listem = [1,2,3,4,5]
print(listem[6])

# Doğru kod
print(listem[2])

5.KeyError: Bir sözlükte olmayan bir anahtar kelime kullanılmaya çalışılırsa KeyError hatası oluşur.

# Hatalı kod
sozlugum = {6:"ankara", 34:"istanbul"}
print(sozlugum[21])
	
# Doğru kod
print(sozlugum[6])

 

6.ValueError: Bir işlevin doğru türde ancak yanlış bir değerle çağrılması durumunda ValueError hatası oluşur. Örneğin, int() işlevine bir dize yerleştirmeye çalıştığınızda bu hata alınır.

# Hatalı kod
x = int("Merhaba")

# Doğru kod
x = int("1")

 

7.ZeroDivisionError: Bir sayı sıfıra bölünmeye çalışılırsa ZeroDivisionError hatası oluşur.

# Hatalı kod
x = 100 / 0

# Doğru kod
x = 100 / 1

 

İyi de ben buradaki her hata türünü bilmek zorunda mıyım dediniz gibi . Tabi ki de hayır işte burada da python yardımımıza koşuyor. Burada Genel bir hata yönetimi yapmış olacağız.

Genel bir hata yönetimi yapmak isterseniz, try-except bloklarında hata türü yerine genel Exception sınıfını kullanabilirsiniz. Bu şekilde, herhangi bir hatanın oluşması durumunda, programın devam etmesine izin verilirken, hatanın türüne bakılmaksızın aynı hata mesajı verilebilir. Örneğin:

try:
    # kodumuzu buraya yazarız
except Exception as e:
    print("Bir hata oluştu:", e)

Bu kodda, try bloğu içinde belirtilen kodlar çalıştırılırken herhangi bir hata oluşursa, except bloğu çalışır ve e değişkenindeki hata mesajı ekrana yazdırılır. Burada Exception sınıfı, tüm hata türlerinin atasıdır, bu nedenle herhangi bir hata türü oluştuğunda bu blok çalışacaktır. Ancak, genel hata yönetimi yaparken, programın akışını etkileyen özel hata türlerini yakalamak yerine, herhangi bir hatanın oluştuğunda sadece bir hata mesajı göstermek istediğimiz durumlarda kullanılmalıdır.

Hata Yönetimi ile ilgili kapsamlı bir örnek

Gelin şimdi biraz daha konuyu ileri götürelim ve diğer konuları da  içerisinde barındıran güzel bir kod yazalım:

Sorumuz şöyle olsun bir tane fonksiyonumuz olsun ve bu fonksiyonumuz içerisinde 1 ile 10 arasında rastgele 5 sayı üretelim, üretilecek beş tane sayıyı toplayalım ve ayrıca bununla kalmayıp burada oluşturulan sayıların toplamını gidip bir başka fonksiyonda beş ile çarpıp iki ile toplayalım En sonunda bunları yaparken de hata kontrollerimizi  gerçekleştirelim.

import random
def topla():
    try:
        listem=[random.randint(1,10) for i in range(5)]
        toplam=sum(listem)
        return toplam
    except Exception as e:
        print("Bir hata oluştu",e)
    
def carp():
    try:
        sonuc=topla()
        sonuc=sonuc*5+2
        print("Sonuç :",sonuc)
    except Exception as e:
        print("toplam oluşturulurken bir hata oldu ",e)

carp()

 

Benzer Yazılar

Gui Dersleri #8 | LabelFrame kullanımı ve TopLevel kullanımı

Python 1 yıl önce

Arkadaşlar merhaba bu makalemizde sizlere python’da LabelFrame kullanımı ve TopLevel kullanımının nasıl yappacağımızı anlatacağım.  Ayrıca size bu konu hakkında çektiğim video’yu bırakıyorum isteyen video izler isteyen aşağıdaki makaleyi okur. Şimdiden iyi seyirler ve iyi okumalar dilerim. ☺ LabelFrame kullanımı : LabelFrame widget’ı, bir çerçeve içindeki bir etiketle birlikte bir grup widget’ı oluşturmanıza olanak tanır. LabelFrame widget’ı, bir Frame widget’ının özelliklerine sahiptir ve ayrıca bir başlık etiketi içerir. Bu widget’lar, diğer widget’ları gruplandırmak için kullanılabilir. from tkinter import* pencere=Tk() pencere.title("label Frame örneği") pencere.geometry("400×300+200+200") kisi_bilgileri=LabelFrame(pencere,text="nüfus örneği", width=300,height=200) kisi_bilgileri.pack(pady=30) kisi_ad=Label(kisi_bilgileri,text="ad soyad") kisi_ad.place(x=20,y=20) kisi_ad_giris=Entry(kisi_bilgileri) kisi_ad_giris.place(x=120,y=20) pencere.mainloop()   yukarıdaki kodumuzda görüleceği üzere formlarda widgetların daha düzenli görünmesini sağlayan labelFrame’mizi  kisi_bilgileri=LabelFrame(pencere,text=”nüfus örneği”, width=300,height=200) şeklinde yükseklik ve genişlik değerleri vererek tanımladık. Bundan sonra ise ekleyeceğimiz widgetları pencere üzerinde tanımlamak yerine kisi_ad=Label(kisi_bilgileri,text=”ad soyad”) buradaki gibi kisi_bilgileri adında tanımladığım LabelFrame değişkeni üzerine eklediğimizi belirtiyoruz. kisi_ad_giris.place(x=120,y=20) burada da Entry nesnesini place özelliği ile x ve y değerlerini vererek konumlandırıyoruz. kodumuzun ekran […]

Python Dersleri | Bayrama özel uygulama yapımı

Python 1 yıl önce

Arkadaşlar Merhabalar bugunkü makalemizde bayramda aklıma gelen bir uygulama senaryosunu gerçekleştirmesini size anlatıyor olacağım. Bayramda vakit ayırıp bunu yeni gerçekleştirdim umarım beğenirsiniz. Bayramınızı kutluyorum şimdiden iyi seyirler ve iyi okumalar dilerim. def __init__(self): Burada yapıcı(constructor ) fonksiyonumuzu tanımladık self belirteci  ile burada attribute’lar ve fonksiyonlara ulaşıyor oalcağız. self.pencere = tk.Tk() self.pencere.title("Bayram Uygulaması") self.pencere.geometry("500×400+500+300") burada pencere ayarlamasınız yaptık. self.soru1=tk.Label(self.pencere,text="1. Mezarlık ziyareti yapıldı mı?") self.soru1.grid(row=0,column=0) self.evet1=tk.Button(self.pencere,text="Evet",command=self.mezarlikEvet) self.evet1.grid(row=0,column=1) burada soru etkietimizi ve yanlarından evet ve hayır butonlarını ekledik burada grid(row,column) yapısına değinecek olursak elemanlarımı grid şeklinde bize yerleştirmemizi sağlayacaktır. def mezarlikEvet(self): self.skor+=20 self.evet1.config(state="disabled") self.hayir1.config(state="disabled") self.guncelle() def mezarlikHayir(self): self.evet1.config(state="disabled") self.hayir1.config(state="disabled") self.guncelle() burada ise buttonlarımızın command parametresine karşılık gelen fonksiyonlarımızı doldurduk. if(self.skor>=80): sonuc = "Neredeyse tüm görevleri yapmışssın helal sana be!🎊🎇 " elif(self.skor>=60 and self.skor<80): sonuc = "Kurban bayramının gerekliliklerini orta düzeyde karşılıyorsun. 😊" elif(self.skor>50 and self.skor<60): sonuc = "kurban bayramının olması gerektiği gibi değil maelesef 😔" else: sonuc = "olmaz öyle kardeşim böyle bayramda […]

Gui Dersleri #7 | Canvas kullanımı, Scale kullanımı ve Scrollbar kullanımı ile ilgili işlemler

Python 1 yıl önce

Arkadaşlar merhaba bu makalemizde sizlere Canvas(Tuval) kullanımı, Scale(ölçek) kullanımı ve Scrollbar(Kaydırma çubuğu) kullanımının nasıl oluşturacağını anlatıyor olacağım ve bunlarla ilgili örnek uygulama yapacağım. Ayrıca size bununla ilgili yukarıda bir örnek video bırakıyorum isteyen video izler isteyen aşağıdaki makaleyi okur. Şimdiden iyi seyirler ve iyi okumalar dilerim. ☺ Canvas(Tuval) kullanımı: Canvas widgeti, Tkinter’da kullanılan bir çizim alanıdır. Bu widgeti kullanarak grafikler, şekiller, metinler ve diğer çizim öğelerini ekrana çizebilirsiniz. Canvas, çeşitli interaktif grafik uygulamaları ve veri görselleştirme için kullanışlıdır. from tkinter import* pencere=Tk() pencere.geometry("300×300+200+200") pencere.title("Canvas örneği") canvas1=Canvas(width=300,height=300,background="gray",highlightthickness=2) canvas1.pack() canvas1.create_rectangle(50,50,100,100,fill="blue") canvas1.create_oval(60,60,150,150,fill="red") canvas1.create_text(50,30,text="merhaba",font="courier 15",fill="yellow") pencere.mainloop()   Bu örnekte, Canvas sınıfını kullanarak bir tuval oluşturuyoruz. width ve height parametreleri tuvalin boyutlarını belirtir. create_rectangle() ve create_oval() metotlarıyla dikdörtgen ve elips gibi çizimler yapabiliriz. Ayrıca create_text() metoduyla da belirtilen özellikte bir text yazısı yazar. Kodlarımızın ekran çıktısı aşağıdaki gibidir:   Scale(Ölçek) kullanımı Scale widgeti, Tkinter’da kullanılan bir kaydırma çubuğu bileşenidir. Kullanıcının bir aralıktaki bir değeri seçmesini […]

0 Yorum

Yorum Yaz

Rastgele