try_catch_finally_006.phpt 680 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. --TEST--
  2. Try catch finally (goto in try/catch block)
  3. --CREDITS--
  4. adoy
  5. --FILE--
  6. <?php
  7. function foo($ex = NULL) {
  8. try {
  9. try {
  10. goto label;
  11. } finally {
  12. var_dump("finally1");
  13. if ($ex) throw $ex;
  14. }
  15. } catch (Exception $e) {
  16. var_dump("catched");
  17. if ($ex) return "return1";
  18. } finally {
  19. var_dump("finally2");
  20. }
  21. label:
  22. var_dump("label");
  23. return "return2";
  24. }
  25. var_dump(foo());
  26. var_dump(foo(new Exception()));
  27. ?>
  28. --EXPECTF--
  29. string(8) "finally1"
  30. string(8) "finally2"
  31. string(5) "label"
  32. string(7) "return2"
  33. string(8) "finally1"
  34. string(7) "catched"
  35. string(8) "finally2"
  36. string(7) "return1"