🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## php异常 ~~~php <?php class Resque_Exception extends Exception { } class Resque_Exception2 extends Exception { } try { a(); } catch(Resque_Exception $e) { echo '1'; } function a() { try { throw new Resque_Exception; } catch(Resque_Exception2 $e) { echo 2; return false; } } ~~~ 1. PHP自定义异常类必须继承自Exception类 ~~~ try { throw new Resque_Exception; } catch(Resque_Exception2 $e) { } ~~~ 2. 是最基本的异常抛出和捕获,throw用于抛出异常类对象,catch结构用于捕获异常,捕获结构中声明的捕获类与被抛出中的异常类一致则异常就被捕获,注意这里如果捕获结构中声明的捕获类为Exception基类的话,那么也能被捕获。也就是如果基类被声明在捕获结构中,那么可以捕获所有异常。 3. 异常如果被捕获,那么异常到此就结束了,否则会逐渐想外层传递,直到被捕获为止。 4. 如果直到最后也没有被捕获的话那么PHP会抛出 `Fatal error: Uncaught exception 'Resque_Exception' in D:\wamp\www\a.php:21 Stack trace: #0 D:\wamp\www\a.php(12): a() #1 {main} thrown in D:\wamp\www\a.php on line 21`未捕获的异常这样的致命错误。 5. 如果设置了异常处理器的话,就不会出现上面的情况,所有没有被捕获异常,最终会被此处理器捕获。 异常处理器的设置: `set_exception_handler('Core\SF::appException');`