Çalışma ve nasıl istisna işleyici yoketmek değil yakalayın

2 Cevap php

Kullanarak bir istisna işleyicisi var çünkü yüklü catch çalışmıyor set_exception_handler()

Ben işe "yakalamak" gerekiyor, bu yüzden ben nasılsa durum işleyici unset gerekiyor sanırım. Böyle set_exception_handler(NULL) gibi şeyler çalışmıyor.

Any ideas how to unset the exception handler?

function my_exception_handler($exception) {
    error_log("caught exception: " . $exception->getMessage() );
}

set_exception_handler("my_exception_handler");

// QUESTION: how does on unset it ?
//set_exception_handler(NULL);

try {
    throw new Exception('hello world');
    error_log("should not happen");
} catch(Exception $e) {
    error_log("should happen: " . $e->getMessage());
}

Actual output:

caught exception: hello world

Desired output:

should happen: hello world

2 Cevap

restore_exception_handler , which is linked from the manual entry for set_exception_handler .

Bir istisna uncaught olduğunda MEZUNLARI, bu durum işlemcileri sadece oyun haline gelmelidir. A catch blok her zaman öncelikli olmalıdır.


Exceptions sayfasındaki yorumlarda biraz Okuma this bug getiriyor ve this bug. Onlar özel hata işleyicisi tanımlandığı İstisnalar yakalanmış olamaz, deneyim tam olarak ne anlatmak.

Çözüm:

5.3 ve HEAD Sabit, 5.2 backported olmayacaktır.

Fonksiyonudur restore_exception_handler. Bir istisna işlenmeyen olduğunda However, işleyici yalnızca aranmalıdır. Bu yakalar devre dışı bırakmaz.