1--TEST-- 2ZE2 catch exception thrown in destructor 3--FILE-- 4<?php 5 6class FailClass 7{ 8 public $fatal; 9 10 function __destruct() 11 { 12 echo __METHOD__ . "\n"; 13 throw new exception("FailClass"); 14 echo "Done: " . __METHOD__ . "\n"; 15 } 16} 17 18try 19{ 20 $a = new FailClass; 21 unset($a); 22} 23catch(Exception $e) 24{ 25 echo "Caught: " . $e->getMessage() . "\n"; 26} 27 28class FatalException extends Exception 29{ 30 function __construct($what) 31 { 32 echo __METHOD__ . "\n"; 33 $o = new FailClass; 34 unset($o); 35 echo "Done: " . __METHOD__ . "\n"; 36 } 37} 38 39try 40{ 41 throw new FatalException("Damn"); 42} 43catch(Exception $e) 44{ 45 echo "Caught Exception: " . $e->getMessage() . "\n"; 46} 47catch(FatalException $e) 48{ 49 echo "Caught FatalException: " . $e->getMessage() . "\n"; 50} 51 52?> 53===DONE=== 54--EXPECTF-- 55FailClass::__destruct 56Caught: FailClass 57FatalException::__construct 58FailClass::__destruct 59Caught Exception: FailClass 60===DONE=== 61