如何让你的服务器永远不抛出500

Posted 我想静静~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让你的服务器永远不抛出500相关的知识,希望对你有一定的参考价值。

PHP常见错误:

1、调用function参数错误

 

array_merge([1,2,3],‘‘); -- Warning: array_merge(): Expected parameter 2 to be an array, string given

 

2、类不存在

Fatal error: Uncaught Error: Class test not found

3、变量未定义

php Notice:  Undefined variable

4、数组无匹配下标

PHP Notice:  Undefined index: abc 

5、数据库入库错误

column not found
data too long for name
Invalid datetime format: 1292 Incorrect datetime value: 111 for column update_time at row 1

 

常用的捕获错误方法:

1、try catch捕获数据库错误

try {
    $TalentModelObj->update($talentInfo,array([id,=,$talentId]));
    return array(retcode=>StatusCode::$SUCCESS,data=>$talentId,msg=>编辑候选人信息成功);
} catch (Throwable $th) {
    return array(retcode=>StatusCode::$ERROR,data=>$th,msg=>编辑失败,错误信息:.json_encode($th));
}

2、注册错误回调函数捕获错误

// 设定报错级别为全部
error_reporting(E_ALL);
// set_error_handler — 设置用户自定义的错误处理函数
set_error_handler([__CLASS__, appError]);
// set_exception_handler — 设置用户自定义的异常处理函数
set_exception_handler([__CLASS__, appException]);
// register_shutdown_function — 注册一个会在php中止时执行的函数,脚本执行完成或者 exit() 后被调用
register_shutdown_function([__CLASS__, appShutdown]);

 

以上是关于如何让你的服务器永远不抛出500的主要内容,如果未能解决你的问题,请参考以下文章

如何从子方法中退出方法而不抛出异常

为啥这段代码不抛出 NullPointerException?

IMAPI:如果图像大小超过可用空间,如何获取图像大小而不抛出异常?

为啥不抛出异常的代码允许捕获已检查的异常?

如何不抛出一般指定的异常?

十步让你成为更优秀的程序员