当前位置: 首页 > 后端技术 > PHP

php异常处理的深入

时间:2023-03-29 21:10:46 PHP

导致如果你调用一个类,调用数据校验时报错,你将如何返回数组,布尔值?数组可以返回错误原因,那布尔值呢?返回一个false,报错的时候把error放到class变量里?还是用特殊的方法得到错误?上面说的情况是代码完全没有问题的情况。如果是一些第三方的工具包,你怎么知道在里面执行会不会导致整个系统崩溃。你说在本地运行没问题,但是环境就不好说了。所以我们使用了异常。以下是我们需要了解的问题。什么时候抛出异常?如何接收异常?如何处理异常?他的使用场景是什么?基础知识基本操作try...catch()抛出错误级别致命错误E_ERROR、语法错误E_PARSE、警告错误E_WARNING、通知错误E_NOTICEphp异常处理类预定义异常*ErrorException(扩展Exception)SPL异常类*LogicException(扩展Exception)//表示程序逻辑错误的异常。这种异常应该直接在代码中修复*BadFunctionCallException//当回调调用未定义的函数或缺少某些参数时会抛出异常*BadMethodCallException//回调方法是未定义的方法或缺少某些参数会被抛出thrownThisexception*DomainException//当值不符合定义的有效数据域时抛出该异常*InvalidArgumentException//当参数不是预期类型时抛出该异常*LengthException//抛出该异常当长度无效时*OutOfRangeException//请求无效索引时抛出的异常,应该在编译时检测到*RuntimeException(extendsException)//运行时出错会抛出该异常*OutOfBoundsException//这样会当值不是有效键时抛出异常,表示编译时无法检测到的错误time*OverflowException//将元素添加到满容器时抛出的异常*RangeException//程序执行期间抛出的异常,指示范围错误。通常这意味着除了/overflow之外还有算术错误。这是运行时版本的DomainException*UnderflowException//在空容器上执行无效操作(例如删除元素)时抛出的异常*UnexpectedValueException//当值与一组值不匹配时抛出该异常。通常,当一个函数调用另一个函数并期望返回值是某种类型或值(不包括算术或缓冲区相关错误)异常处理相关函数时会发生这种情况error_reporting//设置报告的错误级别register_shutdown_function//注册一个函数,它将php终止时执行set_error_handler//设置用户自定义的错误处理函数set_exception_handler//设置用户自定义的异常处理函数error_get_last//获取最后发生的错误预测错误统一返回,接收异常不使用try...catch直接跳转到设置方法db=newPDO($config);if($this->db==false){thrownewPdo("连接失败");}}}?>文章示例工具包示例项目示例FQA1。为什么需要定义自定义异常类?系统不是已经给了很多Choose了,很多composerpackage只是继承而已。答:其实自定义异常就是用来区分异常的粒度的。比如我设置了订单异常、产品异常、用户异常,但是订单中存在各种异常,比如订单支付异常、订单生成异常。*RuntimeException(extendsException)*Order*Paymen*Created*Goods*User*Withdraw项目抛出异常时