2

laravel はかなり新しいので、エラーをどのように処理し、どのようにキャッチするのが最善かは正確にはわかりません。

プレイヤーや現在のマップなどのデータを取得するためにゲーム サーバーにクエリを実行できるサード パーティのゲーム サーバー接続ライブラリを使用しています。

このライブラリは Steam Condenser と呼ばれます: https://github.com/koraktor/steam-condenser

プロジェクトで composer を使用してこれをインポートしましたが、すべて正常に動作しているように見えますが、ライブラリによってスローされる例外をキャッチするのに問題があります。

1 つの例は、クエリしているゲーム サーバーがオフラインの場合です。

これが私のコードです:

public function show($server_name)
{
    try{
        SteamSocket::setTimeout(3000);
        $server = server::associatedServer($server_name);
        $server_info = new SourceServer($server->server_ip);

        $server_info->rconAuth($server->server_rcon);

        $players = $server_info->getPlayers();
        $total_players = count($players);

        $more_info = $server_info->getServerInfo();

        $maps = $server_info->rconExec('maps *');
        preg_match_all("/(?<=fs\)).*?(?=\.bsp)/", $maps, $map_list);    
    }catch(SocketException $e){
        dd("error");
    }
    return view('server', compact('server', 'server_info', 'total_players', 'players', 'more_info', 'map_list'));
}

サーバーがオフラインの場合、SocketException がスローされます。これをキャッチしようとしますが、これは決して起こらないようです。次に、トレースを含むエラー ページを取得します。

サーバーがオフラインであることをエンドユーザーに伝えたいだけなので、これは少し問題を引き起こしますが、このエラーをキャッチできない場合、これを行うことはできません。

私のtry/catchに何か問題がありますか? laravel はキャッチエラーをこのように処理しますか? これはサードパーティのライブラリの問題ですか?

4

1 に答える 1