参考: http://stackoverflow.com/questions/26204315/php-finally-block-aborts-on-autoload
Person.php
1 2 3 4 5 6 |
<?php class Person{ function __construct() { echo 'autoload Person..'."\n"; } } |
main.php
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php function __autoload($classname) { require("Person.php"); } try { throw new Exception("error1"); }catch(Exception $e) { throw new Exception("error2"); }finally{ echo "finnaly\n"; new Person(); // php 5.6 之前,该Person是不能new成功的;而且如果有后续逻辑也是不会继续执行的 } |
解决办法:
- 升级PHP
- 提前加载,如: class_exists(“Person”); 但是,如果Person相关方法执行起来需要自动加载其它类,依然失败,所以,此法基本不可行
- 不使用finally