İstisna işleme, programınızın çalışmayan kısımları için hata mesajlarını özelleştirme ve görüntüleme yeteneğinizdir.

İster bir web sitesi kuruyor, ister bir API, bir modül veya Python kullanarak başka bir ürün yapıyor olun, istisnaları etkili bir şekilde ele alma beceriniz, bir hatanın nedenini açıkça belirtmenize olanak tanır.

Burada, Python'da istisnaları nasıl ele alabileceğinize bir göz atacağız.

Python'da İstisna İşleme Nasıl Çalışır?

İstisnalar oluşturduğunuzda, Python'a bir kod bloğu başarısız olduğunda bir mesaj getirmesini söylüyorsunuz. İstisna işleme, birine bir ağırlık kaldırmayı denemesini söylemek gibidir. Ve yapamazlarsa, size haber vermeleri gerekir.

Ancak Python'da bir istisna oluşturmak için Python'a belirli bir kod bloğunu denemesini ve çalıştırmasını söyleyeceksiniz. Bu blok başarısız olursa, Python'dan başarısız koda tanımlanmış bir istisna oluşturmasını isteyebilirsiniz.

Python Programlamada İstisnaları Ne Zaman Kullanmalısınız?

Çoğu durumda, istisnaları kullanarak standart Python hatalarını maskeleyebilirsiniz. Ancak bunu yapmak hata ayıklama sorunlarına neden olabileceğinden dikkatli olmanız gerekir. Sonuç olarak, olası bir hatanın temel nedenini bulmakta zorlanabilirsiniz.

instagram viewer

Bu nedenle, kodunuzu yeterince test ettiğinizde ve çalıştığından emin olduğunuzda istisnaları kullanmalısınız. Sonuç olarak, kodun kendisinden ziyade kullanıcının sonundan kaynaklanabilecek olası hataları ele almak için bunları kullanmak en iyi uygulamadır.

Başka bir deyişle, istisnaları, programınızı nasıl kullanacakları konusunda kullanıcılara rehberlik etmek için bir uyarı aracı olarak kullanabilirsiniz.

Python İstisnalarını İşleme

Python'daki istisnaları işlemek için önce kodunuzu bir dene... hariç blok. Bazen, bir eklemeniz gerekebilir en sonunda ihtiyaçlarınıza bağlı olarak daha fazla eylemi gerçekleştirmek için ifade.

Python istisnalarının kodlama konsepti genellikle şöyle görünür:

Deneyin:
"yürütülecek kod"
dışında:
"hata mesajı"

Daha önce de belirtildiği gibi, ayrıca kullanabilirsiniz en sonunda bir istisna bloğunda. Ama içine yazdığınız kod bir en sonunda yan tümcesi bağımsızdır ve bir istisna olsa da olmasa da çalışır.

Özünde, içinde ne olduğuna bakılmaksızın sürekli olarak çalıştırmak istediğiniz başka bir kod bloğunuz varsa kullanışlı olur. dene... hariç blok.

İşte bir örnek:

Deneyin:
baskı (9+6)
dışında:
print("hata mesajı")
en sonunda:
print("lütfen yeniden başlatın")
Çıktı:
15
Lütfen yeniden başla

Yukarıdaki kodda, Lütfen yeniden başla istisna olup olmadığına bakılmaksızın sürekli çalışır.

bir Başka durumu da takip edebilir dışında Beyan:

Deneyin:
C = 2 + B
dışında:
print("B'nin tanımlanması gerekiyor")
Başka:
print (u"Başarıyla eklendi! Sonuç %s"%(C))
Çıktı: B tanımlanmalıdır

Şimdi bunu "B" tanımlı olarak tekrar deneyin:

Deneyin:
B = 5
C = 2 + B
dışında:
print("B'nin tanımlanması gerekiyor")
Başka:
print (u"Başarıyla eklendi! Sonuç %s"%(C))
Çıktı: Başarıyla eklendi! sonuç 7

Yukarıdaki örnekler standartlaştırılmamış istisnalardır. Ancak yerleşik (tanımlanmış) istisnaları standartlaştırılmamış olanlarla birleştirdiğinizde daha açık bir istisnanız olabilir:

Deneyin:
C = 2 + B
err olarak NameError dışında:
print (err, ":", "B'nin tanımlanması gerekiyor, lütfen")
Başka:
print (u"Başarıyla eklendi! Sonuç %s"%(C))
Çıktı: 'B' adı tanımlı değil: B'nin tanımlanması gerekiyor, lütfen

Yukarıdaki istisna, önce bir AdHatası içinde Deneyin blok. Daha sonra standardı yazdırır AdHatası önce istisna ("'B' adı tanımlı değil"). Ve bunu yazılı istisnanızla destekler ("B'nin tanımlanması gerekiyor, lütfen").

İlişkili: Her Programcının Bilmesi Gereken Temel Programlama İlkeleri

Ve eğer bir istisnalar zincirini idare etmek istiyorsanız, aynı zamanda bir istisna zincirine de eşlik edebilirsiniz. Deneyin birçok blokla dışında ifadeler. Bu oldukça kullanışlıdır, eğer Deneyin blok birçok istisnaya sahip olma potansiyeline sahiptir:

Deneyin:
B = 5
C = 2 + B
D = yüzer (6)
F = 7/0
err olarak NameError dışında:
print (err,":", "B'nin tanımlanması gerekiyor, lütfen")
val olarak ValueError hariç:
print (val,":", "Bu verileri dönüştüremezsiniz")
ZeroDivisionError olarak zeroerr hariç:
print (zeroerr,":", "Sayıyı sıfıra bölemezsiniz")
Başka:
print (u"İşlem başarılı! Sonuçlar: %s, %s ve %s"%(C, D, F))
Çıktı: sıfıra bölme: Bir sayıyı sıfıra bölemezsiniz

Bölünme geçerliyse ne olur? Örneğin, değiştirme F = 7/0 ile yukarıdaki kodda F = 7/5 verir:

Çıktı: İşlem başarılı! Sonuçlar: 7, 6.0 ve 1.4

Python'da Kullanıcı Tanımlı İstisnalar

İstisnanızı da bulabilir ve daha sonra programınızda arayabilirsiniz. Bu, istisnanızın belirli bir açıklamasını vermenize ve istediğiniz gibi adlandırmanıza olanak tanır.

Bununla birlikte, her kullanıcı tanımlı istisna (doğrudan veya dolaylı olarak) yerleşik olarak gelir. İstisna Python sınıfı.

Aşağıdaki örnek kod, tabana atıfta bulunur İstisna doğrudan arayarak Çalışma hatası ondan:

class connectionError (RuntimeError):
def __init__(kendi, değer):
öz.değer = değer
Deneyin:
connectError("Kötü ana bilgisayar adı")
err olarak connectionError dışında:
yazdır (err.value)
Çıktı: Kötü ana bilgisayar adı

Dikkat bağlantı hatası, bu durumda, programınızda ihtiyacınız olduğunda yükseltebileceğiniz, kullanıcı tanımlı bir sınıftır.

İlişkili: Python ile Normal İfadeler için Başlangıç ​​Kılavuzu

Kullanıcı tanımlı bir istisnayı doğrudan aşağıdakilerden türeterek yapabilirsiniz. İstisna temel sınıf. Ancak aşağıdaki istisna, 5'in 6'dan çıkarılmasını engeller ve istisnayı doğrudan temel sınıftan çağırır:

sınıf hataları (İstisna):
geçmek
sınıf altıFiveError (hatalar):
def __init__(kendi, değer, mesaj):
öz.değer = değer
self.message = mesaj
Deneyin:
sixFiveError (6-5, "Bu çıkarma işlemine izin verilmez") yükseltin
e olarak sixFiveError hariç:
print("Bir hata oluştu:", e.message)
Çıktı: Bir hata oluştu: Bu çıkarma işlemine izin verilmiyor

Pratikte, daha önce tanımladığınız bir istisnayı başka bir fonksiyonda çağırarak kullanabilirsiniz. Örneğin, bir oluşturabilirsiniz floatError bu sadece iki şamandıranın eklenmesine izin verir:

# Önce temel istisna sınıflarını çağırın:
sınıf hataları (İstisna):
geçmek
# Ardından, temel sınıftan kendi istisnanızı türetin:
sınıf FloatError (hatalar):
def __init__(kendi, değer, mesaj):
öz.değer = değer
self.message = mesaj
# İki şamandıra eklemek için bir işlev oluşturun:
def addTwoFloat (a, b):
if ((a) yazın ve (b) yazın) != kayan nokta:
FloatError'ı yükseltin (a+b, "Eklemek için sayılar kayan olmalıdır")
Başka:
yazdır (a + b)
addTwoFloat (4, 7)
Çıktı: __main__.FloatError: (11, 'Eklemek için sayılar kayan olmalıdır')

Çünkü şimdi bir tanımladınız FloatError sınıfını kullanarak iki kayan olmayan değişmezi eklemeye çalışırsanız Python onu yükseltir. addtwoFloat işlev.

yazdırabilirsiniz FloatError ne olduğunu görmek için onu oluşturduğunuz aynı Python dosyasındaki class:

yazdır (FloatError)
Çıktı:

FloatErrorancak yerleşik bir Python istisnası değildir. Bunu arayarak doğrulayabilirsiniz. FloatError bu sınıfı oluşturmadığınız başka bir yeni Python dosyasında:

yazdır (FloatError)
Çıktı: NameError: 'FloatError' adı tanımlı değil

sen bir AdHatası çünkü Python bunu standart bir istisna olarak tanımıyor.

Nasıl oynandığını görmek için diğer hata sınıflarını kendi kendine tanımlamayı deneyebilirsiniz.

Python Programlarınızı İstisnalarla Daha Kullanıcı Dostu Hale Getirin

Python'da birçok standart istisna vardır. Ama sizinkini de tanımlayabilirsiniz. Bununla birlikte, programınızı kullanma kolaylığı bir dereceye kadar çeşitli istisnaları (kullanıcı tanımlı, spesifik olmayan veya standart) nasıl ele aldığına bağlıdır.

Ancak istisnalar, kullanıcılar onlarla etkileşim kurduğunda programınızın nasıl çalışacağını belirlemenize izin verir. Bir hatanın nedenini açık ve net bir şekilde belirtmek, kullanıcılara neyi yanlış yaptıkları konusunda bir fikir verir ve bazen onları doğru yöne yönlendirir.

E-posta
Python Kodunuzda Hata Ayıklama

Yolunuzdaki her Python hatasını ezmek için kendinizi teknik bilgiyle donatın.

Sonrakini Oku

İlgili konular
  • Programlama
  • piton
  • Kodlama Eğitimleri
Yazar hakkında
Idowu Omisola (82 Makale Yayımlandı)

Idowu akıllı teknoloji ve üretkenlik konusunda tutkulu. Boş zamanlarında kodlamayla uğraşıyor ve canı sıkılınca satranç tahtasına geçiyor ama arada sırada rutinden kopmayı da seviyor. İnsanlara modern teknolojinin yolunu gösterme tutkusu onu daha fazla yazmaya motive ediyor.

Idowu Omisola'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Bir adım daha…!

Lütfen size az önce gönderdiğimiz e-postadaki e-posta adresinizi onaylayın.

.