try_catch_finally_007.phpt 823 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. --TEST--
  2. Try catch finally (goto in try/catch block)
  3. --CREDITS--
  4. adoy
  5. --FILE--
  6. <?php
  7. function foo($ret = FALSE) {
  8. try {
  9. try {
  10. do {
  11. goto label;
  12. } while(0);
  13. foreach (array() as $val) {
  14. continue;
  15. }
  16. } finally {
  17. var_dump("finally1");
  18. throw new Exception("exception");
  19. }
  20. } catch (Exception $e) {
  21. goto local;
  22. local:
  23. var_dump("catched");
  24. if ($ret) return "return";
  25. } finally {
  26. var_dump("finally2");
  27. }
  28. label:
  29. var_dump("label");
  30. }
  31. var_dump(foo());
  32. var_dump(foo(true));
  33. ?>
  34. --EXPECTF--
  35. string(8) "finally1"
  36. string(7) "catched"
  37. string(8) "finally2"
  38. string(5) "label"
  39. NULL
  40. string(8) "finally1"
  41. string(7) "catched"
  42. string(8) "finally2"
  43. string(6) "return"