限时 5折! 详情

yii2源码分析-异常处理

4549 0 0

接触yii2之前,很多同学应该都接触过其他php框架,比如一些cms。

早期的cms框架,当然也不排除现在依然存在的一个问题:页面上经常会抛出类似下面的警告或者错误

PHP message: PHP Warning:  Division by zero in /private/var/www/test/index.php on line 3

这是一个非常严重的安全问题,当然你可以去修改配置屏蔽掉类似的一系列错误。这并不是我们要说的重点,此处就不再继续深究下去了。

你应该注意到了一个现象,不管你在 php.ini 文件内怎么配置,在yii2的应用中,类似上面的现象都不会发生。有同学可能要说这个操作并不难,程序中动态修改配置就好了呀。

但是更重要的是yii2会为你呈现更详细的调用栈和错误信息,这对我们来说是非常友好的。

也就是说在yii2中,对错误的处理方式并不等同于原生的php标准错误了,这是怎么做到的?try/catch 捕获异常,然后再向用户展示错误信息?

我们知道,try/catch 捕获的异常是有限的。所以在php中,有了 set_exception_handler 函数专门处理未被 try/catch 捕获的异常。

这个函数是用户自定义异常处理的函数。

继续阅读

还有90%的精彩内容,购买继续阅读