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 はキャッチエラーをこのように処理しますか? これはサードパーティのライブラリの問題ですか?