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!
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.
$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";
?>
Standart PHP kitaplığı önceden tanımlanmış istisnaları içerir.
Sr.No
Önceden Tanımlanmış İstisnalar
1
LogicException
Program mantığında hatayı temsil eden istisna.
2
BadFunctionCallException
Geri çağırma tanımsız bir fonksiyona atıfta bulunursa veya bazı argümanlar eksikse istisna atılır.
3
BadMethodCallException
Geri çağırma tanımsız bir yönteme başvurursa veya bazı argümanlar eksikse istisna atılır.
4
DomainException
Bir değer tanımlanmış geçerli bir veri alanına uymuyorsa istisna atılır.
5
InvalidArgumentException
Bir argüman beklenen tipte değilse istisna atılır.
6
LengthException
Bir uzunluk geçersizse istisna atılır.
7
OutOfRangeException
Yasadışı bir dizin istendiğinde istisna oluştu.
8
RuntimeException
Yalnızca çalışma zamanında bulunabilen bir hata oluştuğunda oluşan istisna.
9
OutOfBoundsException
Bir değer geçerli bir anahtar değilse istisna atılır.
10
OverflowException
Dolu bir konteynere eleman eklerken oluşan istisna.
11
RangeException
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.
12
UnderflowException
Boş bir kapsayıcıda geçersiz bir işlem gerçekleştirildiğinde (örneğin bir öğeyi kaldırırken) oluşan istisna.
13
UnexpectedValueException
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.