Python Hata Nesnesi Fırlatma

Python Hata Nesnesi Fırlatma

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?

  1. Ö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.

  2. 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 olan PozitifSayiHatasi fırlatılır.

  3. except: try ve except 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.



Yorum Ekle

Üzerine gel