You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FatalThrowableError:在null对象上调用getStatusCode()方法排查求助

排查Call to a member function getStatusCode() on null错误

我来帮你搞定这个问题——你遇到的FatalThrowableError根源很清晰:不是所有的RequestException异常都会包含响应对象,当你直接调用$e->getResponse()->getStatusCode()时,如果getResponse()返回null,就会触发这个错误。

为什么会出现null响应?

当你的请求根本无法到达目标服务器时(比如DNS解析失败、网络连接超时、服务器直接拒绝连接),Guzzle抛出的RequestException是不会携带响应对象的。这时候调用$e->getResponse()自然会返回null,后续的getStatusCode()调用就会报错。

修复方案

你需要先判断响应对象是否存在,再处理状态码逻辑。下面是具体的修改步骤:

1. 修正StatusCodeHandling方法

在处理状态码前先检查$e->getResponse()是否有效:

public function StatusCodeHandling(RequestException $e)
{
    // 先确认响应对象存在
    if ($response = $e->getResponse()) {
        $statusCode = $response->getStatusCode();
        if ($statusCode == 400) {
            // 自定义400错误的处理逻辑
            return "Bad Request: " . $e->getMessage();
        } else {
            // 其他HTTP状态码的处理
            return "HTTP Error {$statusCode}: " . $e->getMessage();
        }
    } else {
        // 处理无响应的情况(网络连接类错误)
        return "Connection Failed: " . $e->getMessage();
    }
}

2. 优化pay方法的异常捕获(可选)

你可以进一步细分异常类型,更精准地处理不同场景的错误:

use GuzzleHttp\Exception\ConnectException;
use GuzzleHttp\Exception\RequestException;

// ...

public function pay(string $userid, string $apiuid, int $limiteos) {
    $api_key = "api_key";
    $url = "http://www.payment.com/payment/order";
    $client = new Client();
    
    try {
        $data = [
            'method'=>'create', 
            'user_id' => $userid, 
            'api_uid' => $apiuid, 
            'limit_eos_count' => $limiteos, 
            'api_key' => $api_key
        ];
        $response = $client->post($url, ['query' => $data]);
        return json_decode($response->getBody()->getContents());
    } catch (ConnectException $e) {
        // 专门处理连接失败类错误
        return "无法连接到支付服务器: " . $e->getMessage();
    } catch (RequestException $e) {
        // 处理有响应的HTTP错误
        return $this->StatusCodeHandling($e);
    }
}

这样修改后,不管是网络连接问题还是服务器返回的HTTP错误,都能被正确处理,不会再出现null调用的致命错误。

内容的提问来源于stack exchange,提问作者zoenightshade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:32:29