程序运行正常突然有一天不能导出程序出了什么问题?

遇到的问题

今天一客户突然说到了一个问题:前几天订单数据可以正常导出,今天突然就不可以了!

程序员正确分析

观点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());
    }
}

复制代码

再次运行代码,查看抛出的异常,我们从代码中查看,关于等号这里有了问题

image.png

于是dump查看数据,如下图所示,这个用户的昵称就是“==”(两个等号)这个坑够大啊!!

image.png

解决方案

可以把用户名有等号的方式,进行转义或者替换就可以了!

总结1

正常运行的程序,遇到突然不能使用,大多数是数据本身的问题。

可以用抛出异常找到问题,

再分析数据本身,对数据本身进行处理,

就可以解决问题!

总结2

在开发代码过程中,有经常对方法本身增加抛出异常,这样就可以很方便查看代码的问题!

猜你喜欢

转载自juejin.im/post/7050020720344039437