برنامه نویسی

آیا حوصله امتحان گرفتن را دارید

رسیدگی به خطاهای در Express با یک واسطه CatchAsync سفارشی
هنگام ساختن برنامه های وب با استفاده از Express ، رسیدگی به خطا یکی از مهمترین جنبه ها برای اطمینان از عملکرد صاف و تجربه کاربر است. رسیدگی به خطای نادرست می تواند منجر به تصادفات غیر منتظره ، بازخورد ضعیف کاربر و ناامیدی عمومی برای توسعه دهندگان و کاربران شود. یک رویکرد محبوب در برنامه های مدرن جاوا اسکریپت استفاده از توابع ناهمزمان است و این جایی است که رسیدگی به خطاها به درستی از اهمیت بیشتری برخوردار می شود.

این صمیمی عملکرد به شما کمک می کند تا کد خود را بهینه کرده و آن را سازماندهی کنید:

import { NextFunction, Request, RequestHandler, Response } from "express";

export const catchAsync = (fn: RequestHandler) => {
    return async (req: Request, res: Response, next: NextFunction) => {
        try {
            await fn(req, res, next);
        } catch (error) {
            next(error);
        }
    };
};

چگونه کار می کند

  1. یک عملکرد ناهمزمان را می گیرد: عملکرد CatchAsync یک کنترل کننده مسیر ناهمزمان (FN) را دریافت می کند ، که تابعی است که درخواست های دریافتی را پردازش می کند.

  2. عملکرد را اجرا می کند: ابزار عملکرد ارائه شده را می پیچد و تضمین می کند که به صورت غیر همزمان اجرا شود. اگر عملکرد به درستی حل شود ، طبق معمول پیش می رود.

  3. خطاها را جلب می کند: اگر هنگام اجرای عملکرد ناهمزمان (به عنوان مثال ، در طی یک عملیات پایگاه داده) خطایی رخ دهد ، Middleware CatchAsync خطا را به خود جلب می کند.

  4. خطاها را به میان افزار بعدی منتقل می کند: هرگونه خطای گرفتار شده با استفاده از بعدی (خطا) به وسط بعدی منتقل می شود و به شما امکان می دهد با یک کنترل کننده خطای متمرکز ، خطاها را در سطح جهان انجام دهید.

با استفاده از CatchAsync در برنامه خود

در اینجا نحوه استفاده از ابزار CatchAsync در دستگیرندگان مسیر خود آورده شده است:

import express from "express";
import { catchAsync } from "./catchAsync"; // Importing our custom utility

const app = express();

// Sample asynchronous route handler
const getUserData = async (req: Request, res: Response, next: NextFunction) => {
    const userData = await fetchUserDataFromDatabase(req.params.id); // Assume async DB call
    res.json(userData);
};

// Use the catchAsync utility to wrap your async route handler
app.get('/user/:id', catchAsync(getUserData));

// Global error handler
app.use((err: Error, req: Request, res: Response, next: NextFunction) => {
    console.error(err);
    res.status(500).send({ error: err.message });
});

app.listen(3000, () => {
    console.log("Server is running on http://localhost:3000");
});

مزایای CatchAsync

  • کد پاک کننده: با استفاده از CatchAsync ، از بلوک های تکراری امتحان در هر کنترل کننده مسیر خودداری می کنید ، و باعث می شود کد قابل خواندن و حفظ باشد.

  • رسیدگی به خطای متمرکز: با این ابزار ، همه خطاها (هم همزمان و هم ناهمزمان) گرفتار شده و به یک کنترل کننده خطای مرکزی منتقل می شوند و ساختار کلی برنامه شما را بهبود می بخشند.

  • اشکال زدایی پیشرفته: از آنجا که خطاها به طور مداوم به میان افزار خطای خطای ارسال می شوند ، اشکال زدایی آسان تر می شود. همه خطاها در یک مکان انجام می شود و نیازی به نگرانی در مورد از دست دادن یک خطای خاص نیست.

با احترام ،
ni rimon🌹

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا