遇到的问题
今天一客户突然说到了一个问题:前几天订单数据可以正常导出,今天突然就不可以了!
程序员正确分析
观点1:既然前些天正常,那么肯定程序本身应该是没有问题的。
观点2:有可能是数据录出
程序部分或者服务器本身
有问题导致的!
观点3:我们可以从程序抛出的异常来查看问题并解决!
分析好了,那接下来查看代码
和日志
!
查看
分析服务器
所有其他程序都正常运行,只有这一个导出不能用,基本判断了服务器没有问题。
分析代码
public function export()
{
$export = new Export();
//过程代码
$export->exportExcel('订单列表-' . date('Y-m-d H:i:s'), $expCellName, $newList);
}
复制代码
从以上代码来看,这段代码并没有抛出异常,所以无法查看日志。因此,我们必须增加抛出异常的代码,如下:
public function export()
{
$export = new Export();
//过程代码
try {
$export->exportExcel('订单列表-' . date('Y-m-d H:i:s'), $expCellName, $newList);
} catch (\Exception $e) {
\think\Log::error('订单导出失败,失败原因:' . $e->getMessage() . '-' . $e->getLine() . '-' . $e->getTraceAsString());
}
}
复制代码
再次运行代码,查看抛出的异常,我们从代码中查看,关于等号这里有了问题
于是dump查看数据,如下图所示,这个用户的昵称就是“==”(两个等号)这个坑够大啊!!
解决方案
可以把用户名有等号的方式,进行转义
或者替换
就可以了!
总结1
正常运行的程序,遇到突然不能使用,大多数是数据本身的问题。
可以用抛出异常
找到问题,
再分析数据本身,对数据本身进行处理,
就可以解决问题!
总结2
在开发代码过程中,有经常对方法本身增加抛出异常,这样就可以很方便查看代码的问题!