diff --git a/app/Exceptions/ModuleRequestException.php b/app/Exceptions/ModuleRequestException.php new file mode 100644 index 0000000..ac635fd --- /dev/null +++ b/app/Exceptions/ModuleRequestException.php @@ -0,0 +1,10 @@ +http()->get('remote'); - } catch (ConnectException $e) { + } catch (ModuleRequestException $e) { Log::error('无法连接到模块:' . $module->name, ['error', $e->getMessage()]); continue; } diff --git a/app/Models/Module.php b/app/Models/Module.php index 1fe868d..8e29e91 100644 --- a/app/Models/Module.php +++ b/app/Models/Module.php @@ -2,8 +2,10 @@ namespace App\Models; +use App\Exceptions\ModuleRequestException; use GeneaLabs\LaravelModelCaching\Traits\Cachable; use GuzzleHttp\Exception\ConnectException; +use GuzzleHttp\Exception\RequestException; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Http\Client\PendingRequest; use Illuminate\Http\Client\Response; @@ -175,9 +177,16 @@ public function check($module_id = null): bool return $success; } + /** + * @throws ModuleRequestException + */ public function http(): PendingRequest { - return Http::module($this->api_token, $this->url)->acceptJson()->timeout(5); + try { + return Http::module($this->api_token, $this->url)->acceptJson()->timeout(5); + } catch (ConnectException|RequestException $e) { + throw new ModuleRequestException($e->getMessage()); + } } #[ArrayShape(['transactions' => "array"])]