记录try的使用排查错误

是滑稽啊
2022-03-18 / 0 评论 / 182 阅读 / 正在检测是否收录...

感谢异常捕获

在请求发送短信接口时候使用GuzzleHttp\Client
接口报错-日志报错信息如下:

[2022-03-18 10:35:49] local.ERROR: #0 /www/wwwroot/api/app/Developers/Chuangyun/Chuanglansms.php(126): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined prope...', '/www/wwwroot/ap...', 126, Array)
#1 /www/wwwroot/api/app/Utils/Sms/Sender/ChuanglanSenderAbstract.php(23): App\Developers\Chuangyun\Chuanglansms->send('19145109087', '870987')
#2 /www/wwwroot/api/app/Utils/Sms/Sms.php(40): App\Utils\Sms\Sender\ChuanglanSenderAbstract->send('870987')
#3 /www/wwwroot/api/Modules/SDK/Http/Controllers/V1/SmsController.php(86): App\Utils\Sms\Sms->sendAndSave()
#4 [internal function]: Modules\SDK\Http\Controllers\V1\SmsController->bindTel(Object(App\Http\Requests\V1\TelNotExist))
#5 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)
#6 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\Routing\Controller->callAction('bindTel', Array)
#7 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Modules\SDK\Http\Controllers\V1\SmsController), 'bindTel')
#8 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): Illuminate\Routing\Route->runController()
#9 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\Routing\Route->run()
#10 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#11 /www/wwwroot/api/Modules/SDK/Http/Middleware/Retain.php(23): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#12 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Modules\SDK\Http\Middleware\Retain->handle(Object(Illuminate\Http\Request), Object(Closure))
#13 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#14 /www/wwwroot/api/app/Http/Middleware/ResponseLog.php(21): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#15 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): App\Http\Middleware\ResponseLog->handle(Object(Illuminate\Http\Request), Object(Closure))
#16 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#17 /www/wwwroot/api/app/Http/Middleware/Authorization.php(18): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#18 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): App\Http\Middleware\Authorization->handle(Object(Illuminate\Http\Request), Object(Closure))
#19 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#20 /www/wwwroot/api/Modules/SDK/Http/Middleware/CheckDevice.php(36): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#21 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Modules\SDK\Http\Middleware\CheckDevice->handle(Object(Illuminate\Http\Request), Object(Closure))
#22 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#23 /www/wwwroot/api/app/Http/Middleware/RequestPretreatment.php(15): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#24 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): App\Http\Middleware\RequestPretreatment->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#26 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#27 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#28 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#29 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(43): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#30 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Auth\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))
#31 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#32 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#33 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(660): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#34 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(635): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#35 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(601): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#36 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(590): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#37 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#38 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#39 /www/wwwroot/api/vendor/barryvdh/laravel-cors/src/HandleCors.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#40 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Fruitcake\Cors\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
#41 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#42 /www/wwwroot/api/app/Http/Middleware/Proxies.php(20): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#43 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): App\Http\Middleware\Proxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#44 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#45 /www/wwwroot/api/vendor/fideloper/proxy/src/TrustProxies.php(56): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#46 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#47 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#48 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#49 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#50 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#51 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#52 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#53 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#54 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#55 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#56 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#57 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#58 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#59 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#60 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#61 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#62 /www/wwwroot/api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#63 /www/wwwroot/api/public/index.php(55): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#64 {main}

尤其是第一行的报错没有看明白

0 /www/wwwroot/api/app/Developers/Chuangyun/Chuanglansms.php(126): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined prope...', '/www/wwwroot/ap...', 126, Array)

打印日志尝试好久也没有找到哪里出现问题,只是知道大概的错误地址 Chuanglansms.php(126行代码处)

/**
     * @param string $phoneNumbers
     * @param string $templateId
     * @param string $templateParams
     * @return bool
     * @throws \Exception
     */
    public function send(string $phoneNumbers, string $code): bool
    {
        $this->phoneNumbers = $phoneNumbers;
        $this->code = $code;

        $client = $this->getConnect();
        $response = $client->post('/msg/v1/send/json', ['headers' => ['Content_Type' => 'application/json'], 'json' => $this->getParams()]); 

        $res = json_decode($response->getBody()->getContents());
        
        if ($res->RetCode > 0) {
            Log::error('创蓝云智短信发送失败:' . json_encode($res));
            throw new \Exception('系统异常,发送失败');
        }
        return true;
    }

126报错异常的代码就是上述代码段18行 if ($res->RetCode > 0) {
这个RetCode我一直以为是请求接口返回参数,没有觉得他错误应该是其他的错误。【这里是思维的坑】

然后留意了一下这个
(8, 'Undefined prope...', '/www/wwwroot/ap...', 126, Array)
有报错信息,但是不完整。

想了也半天,忽然想起项目中大量使用了try catch
然后尝试了一下果然报错信息完整了

/**
     * @param string $phoneNumbers
     * @param string $templateId
     * @param string $templateParams
     * @return bool
     * @throws \Exception
     */
    public function send(string $phoneNumbers, string $code): bool
    {
        $this->phoneNumbers = $phoneNumbers;
        $this->code = $code;
        try{

        $client = $this->getConnect();

        $response = $client->post('/msg/v1/send/json', ['headers' => ['Content_Type' => 'application/json'], 'json' => $this->getParams()]); 

        $res = json_decode($response->getBody()->getContents());
        Log::debug('接口返回报文:'.json_encode($res));

        if ($res->RetCode > 0) {
            Log::error('创蓝云智短信发送失败:' . json_encode($res));
            throw new \Exception('系统异常,发送失败');
        }
        } catch (Exception $e) {
            Log::debug('异常错误:'.$e->getMessage());
            throw new \Exception('系统异常,发送失败2');
            return false;
        }
        return true;
    }

打印日志

[2022-03-18 10:58:26] local.DEBUG: 异常错误:Undefined property: stdClass::$RetCode

提示未定义属性的错误。果然这个RetCode有问题。

补充:
在laravel9中使用try格式

use Exception;
use Illuminate\Support\Facades\Log;

try{
    
} catch(Exception $e){
    Log::debug('异常错误:'.$e->getMessage());
    throw new \Exception('系统异常');
}
0

评论

博主关闭了所有页面的评论