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ı:
PozitifSayiHatasi
adında,Exception
sı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_mi
fonksiyonu içinde, sayı sıfırdan küçük veya eşitse,raise
anahtar kelimesiyle özel hata sınıfımız olanPozitifSayiHatasi
fırlatılır. -
except:
try
veexcept
blokları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
-
raise
anahtar 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.
-
raise
ifadesi ile özel hata mesajları ekleyebilir, daha anlamlı hata yönetimi gerçekleştirebilirsiniz. -
from
anahtar 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.