Python’da hatalar genellikle önceden tanımlanmış istisnalarla yönetilir. Ancak, programcılar kendi özel hata nesnelerini de oluşturabilir ve bu hataları belirli durumlar karşısında fırlatabilir. Bu, bir programın belirli koşullar altında nasıl davranacağını kontrol etmek ve hataları daha açıklayıcı hale getirmek için çok yararlıdır. Hata nesnesi fırlatmak için Python'da
raise
anahtar kelimesi kullanılır.
raise ile Hata Fırlatma
Bir hata nesnesi fırlatmak için raise anahtar kelimesi kullanılır. Bu, bir hata oluştuğunda o hatanın programın akışını durdurmasını ve bir hata mesajı üretmesini sağlar.
Temel Kullanım
Bir raise ifadesi kullanarak Python’un yerleşik hata türlerinden birini fırlatabiliriz.
raise ValueError("Geçersiz bir değer girildi.")
Bu kod, manuel olarak bir ValueError hatası oluşturur ve isteğe bağlı bir hata mesajı ekleyebilirsiniz. Bu hata programın o noktada sonlanmasına neden olur.
Örnek 1: raise Kullanımı
def pozitif_mi(sayi):
if sayi <= 0:
raise ValueError("Sayı sıfırdan büyük olmalıdır.")
return True
try:
pozitif_mi(-5)
except ValueError as hata:
print(hata)
Çıktı:
Sayı sıfırdan büyük olmalıdır.
Bu örnekte, eğer fonksiyona negatif bir sayı gönderilirse, raise ifadesi ile manuel olarak bir ValueError hatası fırlatılır. Hata mesajı, except bloğunda yakalanarak ekrana yazdırılır.
Kendi Özel Hata Sınıfını Tanımlama ve Fırlatma
Python’da ayrıca kendi özel hata sınıflarınızı oluşturabilirsiniz. Bu, programınıza özgü hata koşullarını daha iyi tanımlamanıza ve yönetmenize olanak tanır. Özel bir hata sınıfı, Python'daki yerleşik Exception sınıfından türetilir.
Örnek 2: Kendi Hata Sınıfınızı Oluşturma
# Özel bir hata sınıfı oluşturma
class PozitifSayiHatasi(Exception):
def __init__(self, sayi, mesaj="Sayı sıfırdan büyük olmalıdır."
):
self.sayi = sayi
self.mesaj = mesaj
super().__init__(self.mesaj)
def pozitif_mi(sayi):
if sayi <= 0:
raise PozitifSayiHatasi(sayi)
return True
# Hata fırlatma ve yakalama
try:
pozitif_mi(-10)
except PozitifSayiHatasi as hata:
print(f"Hata: {hata.mesaj} Girilen sayı: {hata.sayi}")
Çıktı:
Hata: Sayı sıfırdan büyük olmalıdır. Girilen sayı: -10
Bu Örnekte Neler Oluyor?
-
Özel Hata Sınıfı:
PozitifSayiHatasiadında,Exceptionsınıfından türetilmiş bir hata sınıfı tanımladık. Bu sınıf, bir sayı girildiğinde bu sayının negatif olması durumunda bir hata fırlatmamıza olanak tanır. -
raise:
pozitif_mifonksiyonu içinde, sayı sıfırdan küçük veya eşitse,raiseanahtar kelimesiyle özel hata sınıfımız olanPozitifSayiHatasifırlatılır. -
except:
tryveexceptbloklarıyla bu hata yakalanır ve uygun bir hata mesajı ile kullanıcıya geri bildirilir.
raise ifadesi ile Hata Zincirleme
Bazen, bir hatayı ele alırken orijinal hatayı başka bir hata ile zincirlemek isteyebilirsiniz. Bu durumda raise ifadesini from anahtar kelimesiyle birlikte kullanabilirsiniz.
Örnek 3: Hata Zincirleme
try:
sayi = int(input("Bir sayı girin: "))
except ValueError as orijinal_hata:
raise TypeError("Hatalı veri türü girildi.") from orijinal_hata
Bu örnekte, ValueError hatası oluştuğunda bu hata TypeError ile zincirlenir. Böylece programın orijinal hatası ile yeni hata arasında bir bağlantı oluşturulmuş olur.
Özet
-
raiseanahtar kelimesi, Python’da hataları manuel olarak fırlatmak için kullanılır. - Yerleşik hata türlerini fırlatabileceğiniz gibi, kendi özel hata sınıflarınızı da tanımlayabilir ve fırlatabilirsiniz.
-
raiseifadesi ile özel hata mesajları ekleyebilir, daha anlamlı hata yönetimi gerçekleştirebilirsiniz. -
fromanahtar kelimesiyle hataları zincirleyerek orijinal hatanın kaynağını koruyabilirsiniz.
Bu özellikler, programınızın hatalara karşı daha dayanıklı ve daha iyi yönetilebilir olmasını sağlar.