سلام وقتتون بخیر گاهی حین استفاده از apiهای خارجی به یک هچین خطا هایی بر میخوریم چطور مثل ساختار try catch در php این مورد رو هندل کنیم
سلام،
در سیستم لاراول هم میتونید بصورت try/catch اکسپشن هارو مدیریت کنید.
اگر نیاز به اکسپشن کاستوم دارید میتونید کلاسش رو بسازید:
php artisan make:exception ApiException
تغییرات در کلاس:
class ApiException extends Exception { public function __construct($code, $message, $data = []) { parent::__construct($message, $code); $this->data = $data; } public function getData() { return $this->data; } }
نحوه استفاده:
try { // Call the API // ... } catch (ApiException $e) { // Handle the error $code = $e->getCode(); $message = $e->getMessage(); $data = $e->getData(); // ... }
یک مثال ارسال ایمیل از سایت مرجع + استفاده از try/catch:
use Illuminate\\Support\\Facades\\Mail; use App\\Mail\\OrderShipped; use Exception; class OrderShipmentController extends Controller { public function store(Request $request): RedirectResponse { $order = Order::findOrFail($request->order_id); // Ship the order... try { Mail::to($request->user())->send(new OrderShipped($order)); } catch (Exception $e) { Log::error('Mail sending failed!', ['error' => $e->getMessage()]); return redirect('/orders')->with('error', 'Error sending email. Please try again.'); } return redirect('/orders')->with('success', 'The order was sent successfully.'); } }
نکته: البته برای ارسال ایمیل بهتر است از Queue استفاده شود تا UX بهتری هم داشته باشد.