今天突然想写健壮一点的代码,于是有了下面的东西。
首先,php 的错误提醒是为了方便开发者查找错误,但仅此而已,虽然你可以使用 set_error_handler 函数设置自己的错误处理函数,但作用不大,而且不能处理 E_ERROR、 E_PARSEE_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR…… 级别的错误。
(php错误处理相关函数:http://php.net/manual/zh/book.errorfunc.php)
所以一般我们需要使用

来处理“异常”。但是……还有个问题,php 异常捕获并不能捕获到 php 的错误提醒。所以如果中间哪里的代码出错了,比如

并不能 catch 到 a 没有定义这个错误,代码并没有跳到 catch 语句块(没有打印 “有错误……”)

最后找到了错误捕获函数 error_get_last ,error_get_last 能捕获到最后一次出现的错误,并返回相关信息,所以把代码改成

这样,异常捕获就能在 代码发生错误的时候也能跳到 catch 语句块执行

另外:error_get_last 函数要求 php 版本为 5.2 以上
首先,php 的错误提醒是为了方便开发者查找错误,但仅此而已,虽然你可以使用 set_error_handler 函数设置自己的错误处理函数,但作用不大,而且不能处理 E_ERROR、 E_PARSEE_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR…… 级别的错误。
(php错误处理相关函数:http://php.net/manual/zh/book.errorfunc.php)
所以一般我们需要使用

来处理“异常”。但是……还有个问题,php 异常捕获并不能捕获到 php 的错误提醒。所以如果中间哪里的代码出错了,比如

并不能 catch 到 a 没有定义这个错误,代码并没有跳到 catch 语句块(没有打印 “有错误……”)

最后找到了错误捕获函数 error_get_last ,error_get_last 能捕获到最后一次出现的错误,并返回相关信息,所以把代码改成

这样,异常捕获就能在 代码发生错误的时候也能跳到 catch 语句块执行

另外:error_get_last 函数要求 php 版本为 5.2 以上