1--TEST-- 2Fixed Bug #65784 (Segfault with finally) 3--FILE-- 4<?php 5function foo1() { 6 try { 7 throw new Exception("not catch"); 8 return true; 9 } finally { 10 try { 11 throw new Exception("caught"); 12 } catch (Exception $e) { 13 } 14 } 15} 16try { 17 $foo = foo1(); 18 var_dump($foo); 19} catch (Exception $e) { 20 do { 21 var_dump($e->getMessage()); 22 } while ($e = $e->getPrevious()); 23} 24 25function foo2() { 26 try { 27 try { 28 throw new Exception("caught"); 29 return true; 30 } finally { 31 try { 32 throw new Exception("caught"); 33 } catch (Exception $e) { 34 } 35 } 36 } catch (Exception $e) { 37 } 38} 39 40$foo = foo2(); 41var_dump($foo); 42 43function foo3() { 44 try { 45 throw new Exception("not caught"); 46 return true; 47 } finally { 48 try { 49 throw new NotExists(); 50 } catch (Exception $e) { 51 } 52 } 53} 54 55$bar = foo3(); 56--EXPECTF-- 57string(9) "not catch" 58NULL 59 60Fatal error: Uncaught Exception: not caught in %sbug65784.php:42 61Stack trace: 62#0 %sbug65784.php(52): foo3() 63#1 {main} 64 65Next Error: Class 'NotExists' not found in %sbug65784.php:46 66Stack trace: 67#0 %sbug65784.php(52): foo3() 68#1 {main} 69 thrown in %sbug65784.php on line 46 70