🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ محمدرسول اصغری
جلوگیری از نمایش خطا
جامعه لاراول ایجاد شده در ۰۱ شهریور ۱۴۰۲

سلام وقتتون بخیر گاهی حین استفاده از api‌های خارجی به یک هچین خطا هایی بر میخوریم چطور مثل ساختار try catch در php این مورد رو هندل کنیم

1e0f-Screenshot from 2023-08-23 17-37-31.png

سلام،

در سیستم لاراول هم میتونید بصورت 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 بهتری هم داشته باشد.

بهترین پاسخ
محسن موحد ۰۱ شهریور ۱۴۰۲، ۲۰:۵۷