romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP – İstisnalar

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,439
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,280
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 6 Gün
Başarım Puanı
1,051
MmoLira
695,092
DevLira
234
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

php-dili.jpg

7. sürümden önce, PHP ayrıştırıcısı çeşitli koşullara yanıt olarak hataları bildirirdi. Her hata önceden tanımlanmış belirli bir türde olurdu. PHP7 hata raporlama mekanizmasını değiştirdi. Geleneksel hata raporlaması yerine, çoğu hata artık hata istisnaları atılarak bildiriliyor.

PHP'deki istisna işleme mekanizması diğer birçok dildekine benzerdir ve try, catch, throw ve finally anahtar sözcükleri ile uygulanır.

Atılabilir Arayüz

PHP'deki istisnalar Throwable arayüzünü uygular . Throwable arayüzü, Error ve Exception nesneleri de dahil olmak üzere throw ifadesi aracılığıyla atılabilen herhangi bir nesne için temel görevi görür.

Kullanıcı tanımlı bir sınıf, Throwable arayüzünü doğrudan uygulayamaz. Bunun yerine, kullanıcı tanımlı bir istisna sınıfı bildirmek için, Exception sınıfını genişletmelidir.

Olası istisnaları olan PHP kodu bir try bloğuyla çevrilidir . Bulunursa, olası istisnaların yakalanmasını kolaylaştırmak için bir istisna nesnesi fırlatılır. Her try'ın en az bir tane karşılık gelen catch veya finally bloğu olmalıdır. Ayrıca, bir try bloğuna karşılık gelen birden fazla catch/finally bloğu olabilir.

try {

// throw errors in the try-block
// if an error occurs we can throw an exception
throw new Exception('this is an error.');
}
catch(Exception $e) {

// catch the throws in the catch-block
// do something with the exception object, eg.
// display its message
echo 'Error message: ' .$e->getMessage();
}

Bir istisna atılırsa ve bir yakalama bloğu yoksa, istisna eşleşen bir yakalama bloğu bulana kadar "kabarır". Çağrı yığını eşleşen bir yakalama bloğuyla karşılaşmadan küresel kapsama kadar açılırsa, küresel bir istisna işleyicisi çağrılır (ayarlanmışsa), aksi takdirde program ölümcül bir hatayla sonlanır.

set_exception_handler

Bu fonksiyon, bir istisna try/catch bloğu içinde yakalanmazsa varsayılan istisna işleyicisini ayarlar. Geri arama yürütüldükten sonra, program yürütmesi duracaktır.

set_exception_handler(?callable $callback): ?callable

$callback parametresi, yakalanmamış bir istisna oluştuğunda çağrılacak fonksiyonun adıdır. Bu fonksiyon, set_exception_handler() çağrılmadan önce tanımlanmalıdır. Bu işleyici fonksiyonunun, fırlatılan istisna nesnesi olacak bir parametreyi kabul etmesi gerekir.

İşlev, daha önce tanımlanmış istisna işleyicisinin adını veya hata durumunda NULL değerini döndürür. Daha önce hiçbir işleyici tanımlanmamışsa, NULL da döndürülür.

Örnek

Aşağıdaki örneğe bir göz atın.

PHP:
<?php
   function handler($ex) {
      echo "Uncaught exception is : " , $ex->getMessage(), "\n";
   }

   set_exception_handler('handler');
   throw new Exception('Not Found Exception');
   echo "not included Executed\n";
?>

Aşağıdaki çıktıyı üretecektir:

Uncaught exception is : Not Found Exception

SPL İstisnaları

Standart PHP kitaplığı önceden tanımlanmış istisnaları içerir.

Sr.NoÖnceden Tanımlanmış İstisnalar
1LogicException
Program mantığında hatayı temsil eden istisna.
2BadFunctionCallException
Geri çağırma tanımsız bir fonksiyona atıfta bulunursa veya bazı argümanlar eksikse istisna atılır.
3BadMethodCallException
Geri çağırma tanımsız bir yönteme başvurursa veya bazı argümanlar eksikse istisna atılır.
4DomainException
Bir değer tanımlanmış geçerli bir veri alanına uymuyorsa istisna atılır.
5InvalidArgumentException
Bir argüman beklenen tipte değilse istisna atılır.
6LengthException
Bir uzunluk geçersizse istisna atılır.
7OutOfRangeException
Yasadışı bir dizin istendiğinde istisna oluştu.
8RuntimeException
Yalnızca çalışma zamanında bulunabilen bir hata oluştuğunda oluşan istisna.
9OutOfBoundsException
Bir değer geçerli bir anahtar değilse istisna atılır.
10OverflowException
Dolu bir konteynere eleman eklerken oluşan istisna.
11RangeException
Program yürütme sırasında aralık hatalarını belirtmek için atılan istisna. Alt/taşma dışındaki bir aritmetik hata.
12UnderflowException
Boş bir kapsayıcıda geçersiz bir işlem gerçekleştirildiğinde (örneğin bir öğeyi kaldırırken) oluşan istisna.
13UnexpectedValueException
Bir değer bir değer kümesiyle uyuşmuyorsa istisna atılır.

Kullanıcı tanımlı istisna

Temel Exception sınıfını genişleten özel bir istisna sınıfı tanımlayabilirsiniz. Aşağıdaki betik myException adlı özel bir istisna sınıfı tanımlar. Bu tür bir istisna, $num değeri 0'dan küçük veya 100'den büyükse atılır.

Örnek​

Exception sınıfının getMessage() metodu hata mesajını döndürür ve getLine() metodu ise exception'un göründüğü kod satırını döndürür.

PHP:
<?php
   class myException extends Exception {
      function message() {
         return "error : ". $this->getMessage(). "in line no". $this->getLine();
      }
   }
   $num=125;
   try {
      if ($num>100 || $num<0)
      throw new myException("$num is invalid number");
      else
      echo "$num is a valid number";
   }
   catch (myException $m) {
      echo $m->message();
   }
?>

Yukarıdaki kodu $num=125 ve $num=90 ile çalıştırarak bir hata mesajı ve geçerli bir sayı mesajı alın.

error : 125 is invalid number in line no 10
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst