PHP5 de İstisna İşleme ( Exception Handling )

istisnaPHP5 ile gelen yeniliklere göz attığınız zaman “try,throw,catch” kod bloğu hemen dikkatinizi çekecektir. Bir kaç blog dışında bu olayı anlatan herhangi bir Türkçe dökümana rastlamadım, o yüzden bildiğim kadarıyla paylaşayım dedim.

Öncelikle İtüsözlük’ten Exfloresse olayı şu şekilde açıklamış:

Bir şehir efsanesine göre 5 yıl programcı olarak çalışmış kişilerin mahkemede tanık olarak dinlenmesi yasaktır. Çünkü her olasılığı dikkate alarak senaryo yazabilirler. İşte bu paranoyanın sebebidir exception handling. Oysa katil her zaman olay mekanına geri döner. Evet.

Bu açıklamaya saatlerce güldüğümü söylemek isterim :)

Basit bir örnekle hemen anlatalım.

  1. class ornek{
  2. // ornek isimli bir sınıf oluşturuyoruz.
  3. public $deger;
  4. // açık erişimli bir nitelik değişkeni oluşturuyoruz.
  5. public function __construct($deger){
  6. /* açık erişimli inşaa fonksiyonumuzu oluşturuyoruz.
  7. Sınıf bir değişkene tanımlanırken parametre olarak
  8. bir değer isteyecek
  9. */
  10. try{
  11. // istisna işleme başlıyor...
  12. if (is_int($deger)){
  13. // eğer gelen değer sayısal bir değer ise...
  14. $this->deger=$deger;
  15. /*
  16. deger isimli nitelik değişkenimize
  17. atanmasını istiyoruz ve...
  18. */
  19. echo "tamam";
  20. // "tamam" yazmasını istiyoruz.
  21. }
  22. else{
  23. // değilse...
  24. throw new Exception('Sayısal Değer Olsun');
  25. /*
  26. sınıfın tüm işlemi durdurmasını
  27. ve ayıklama mesajı göndermesini istiyoruz.
  28. */
  29. }
  30. }
  31. catch(Exception $hata){
  32. /*
  33. istisna sınıfını hata adlı değişkene atadık ve olabilecek
  34. istisnalarda ne yapılması gerektiğini anlatmaya başlıyoruz
  35. */
  36. echo $hata->getMessage();
  37. /*
  38. istisna durumunda throw ile gönderdiğimiz mesajın
  39. ekrana yazılmasını istiyoruz.
  40. */
  41. }
  42. }
  43.  
  44. }
  45.  
  46. ?>

Şimdi sınıfımızı kuralına göre kullanalım.

  1. $deneme = new ornek(1);

Bu şekilde kullanımda ekranda tamam yazısını göreceksiniz.Ancak…

  1. $deneme = new ornek('deneme');
  2. $deneme = new ornek('1')

Gibi kullanımlarda ise hata mesajını alacaksınız.

Son olarak bildirmek gerekirse istisna işleme yapıldığı zaman sınıfın çalışması tamamen duruyor ve bu kullanıcıyı kullanımda bilinçlendirip şartlara bağlayabiliyor.

Ayrıca bildirmek gerekirse, hata bildirimleri yapılırken,
getLine(); ile hata satırı, getFile(); ile hatalı işleyen dosyayı ve son olarak getCode(); ile hatalı kodu döndürebilirsiniz.

Keşke bu “dökümanımsıyı” başka zamana saklasaydım, uykusuzluktan ne iğrenç bir anlatımda bulundum. Özür dilerim, ciddiyim.


EkleBunu Sosyal Paylaşım Butonu

Comments

  1. Quote

    Bir tür hata yönetimi ve denetimi demek doğru olur mu? Ayrıca filter_var() fonksiyonunun sınıf atanmış hali denebilir mi?

  2. Quote

    Hocam filter_var fonksiyonu belirli denetimleri yapan bir fonksiyon olarak biliyorum. try,throw,catch kod bloğu ise, örneğin bir sınıf kodladınız ve bunu son kullanıcılara ulaştırıyorsunuz. Sınıfın doğru kullanılmasını sağlamak, hata oluşmasını önlemek için bu tarz bir denetimde bulunmak en doğrusu olacaktır. Zamanında PHP4 de sınıf kullanımında olumsuzluklara karşı die(); fonksiyonunu kullanıp sınıf işlemesini durduruyorduk, PHP5 ile gelen bu yeniliğin diğer bir amacı ise PHP5 i JAVA ile kullanabilmeye yaklaştırmak için(miş).Yakında PHP5 ve JAVA’yı bir arada kullanabilecek(miş)iz :)

  3. Quote

    Kodlamada js ile benzerlikler çok zaten. Tam olarak gerçekleştiğinde mükemmel olacaktır.

  4. Quote

    Evet hocam, JavaScript’te de aynı şekilde istisna işlemeyi yönetebiliyorsunuz. Yalnız karıştırmayalım, JavaScript ile Java ayrı şeyler :) Üreticileri ayrı.

Leave a Comment

(required)

(required)

Formatting Your Comment

The following XHTML tags are available for use:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

URLs are automatically converted to hyperlinks.