PHP işleme İstisna: $ e gidiyor nedir?

5 Cevap php

Ben bu arıyor ve ben sadece bu kodu, aynı makaleleri içine çalıştırmak gibi görünüyor:

   try
    {
        //some code

    }
    catch(Exception $e){
        throw $e;
    }

$ E nerede depolanır yok ya nasıl webmaster görüyorum? Ben özel bir fonksiyon için bakmak gerekir?

5 Cevap

Bir Exception object (Bu durumda, $ e) {} catch bloğu içine atılan sonraki en yüksek try {} catch {} bloğu tarafından yakalanmış olacaktır.

İşte aptalca bir örnek:

try {
    try {
        throw new Exception("This is thrown from the inner exception handler.");
    }catch(Exception $e) {
        throw $e;
    }
}catch(Exception $e) {
    die("I'm the outer exception handler (" . $e->getMessage() . ")<br />");
}

Yukarıdakilerin çıkışı

Ben (Bu iç durum işleyicisi atılır.) Dış istisna eylemcisi değilim

Güzel bir şey İstisna __ uygulayan toString () ve bir çağrı yığını izlemesi çıktılar olmasıdır.

Bu yüzden bazen Biliyorum düşük seviyeli İstisnalarda Seni ben, yakalamak () Ben sadece yapmak lazım nasıl görmek istiyorsanız ben

error_log($e);

Ben senin koduna istisna atıyor onu bu kodu ile üçüncü parti kodu / kütüphane çeşit kullanarak varsayarak yaşıyorum. Sadece o zaman istediğiniz ancak bunu göstermek / onu giriş yapabilirsiniz, onu yakalamak için atılmış bir istisna için hazır olmak zorunda.

try {
  $Library->procedure();
catch(Exception $e) {
  echo $e->getMessage(); //would echo the exception message.
}

Daha fazla bilgi için Exceptions üzerine PHP manuelin girişi okumak.

Hatları:

catch(Exception $e){
  throw $e;
}

Don \ t mantıklı. Bir özel durum yakalamak zaman gibi istisna ile bir şeyler yapmak varsayalım konum:

catch(Exception $e){
  error_log($e->getMessage());
  die('An error has occurred');
}

But in your case the Exception is thrown directly to an outer try-block which would already happen.
If you change your code to:

//some code

Aynı davranışı yaratacak.