آموزش فریمورک فلسک | مدیریت خطاها

انواع خطاها

در هر برنامه وب، خطاها بخش اجتناب‌ناپذیری از فرایند توسعه و اجرا هستند. وقتی برنامه‌ای با فلسک می‌سازید، ممکن است در هر لحظه با انواع مختلفی از خطاها مواجه شوید. شناخت این خطاها اولین قدم برای مدیریت صحیح آن‌هاست. خطاها را می‌توان به چند دسته کلی تقسیم کرد که هر کدام منشأ و رفتار متفاوتی دارند.

دسته اول، خطاهای مربوط به درخواست کاربر یا همان خطاهای سمت کلاینت هستند. این خطاها وقتی رخ می‌دهند که کاربر چیزی از سرور می‌خواهد که امکان‌پذیر نیست یا اشتباه است. معروف‌ترین نمونه این دسته، خطای ۴۰۴ است که زمانی اتفاق می‌افتد که کاربر آدرسی را وارد می‌کند که در برنامه شما تعریف نشده است. مثلاً اگر مسیری برای «/about» تعریف نکرده باشید و کاربر آن را در مرورگر وارد کند، با خطای ۴۰۴ مواجه می‌شود. نمونه دیگر، خطای ۴۰۵ است که وقتی رخ می‌دهد که کاربر بخواهد به روشی به یک مسیر دسترسی پیدا کند که مجاز نیست. مثلاً مسیری فقط برای درخواست GET طراحی شده باشد، اما کاربر درخواست POST بفرستد. همچنین خطای ۴۰۰ زمانی رخ می‌دهد که داده‌های ارسالی کاربر نامعتبر یا ناقص باشد، مثلاً فرمی را بدون پر کردن فیلدهای اجباری ارسال کند.

دسته دوم، خطاهای سمت سرور هستند که با کدهای ۵۰۰ به بالا نمایش داده می‌شوند. این خطاها نشان‌دهنده مشکلی در خود برنامه یا سرور هستند، نه در رفتار کاربر. مهم‌ترین آن‌ها خطای ۵۰۰ است که به معنای خطای داخلی سرور است. این خطا معمولاً وقتی رخ می‌دهد که کد پایتون شما در حین اجرا با یک استثنا (Exception) مواجه شود و فلسک نتواند آن را مدیریت کند. مثلاً اگر در تابعی تقسیم بر صفر انجام دهید یا به یک کلید ناموجود در دیکشنری دسترسی پیدا کنید، برنامه با خطای ۵۰۰ مواجه می‌شود. خطای ۵۰۳ نیز زمانی رخ می‌دهد که سرور به دلیل بار زیاد یا تعمیرات موقت در دسترس نیست.

دسته سوم، خطاهای منطقی برنامه هستند که ممکن است همیشه به‌صورت مستقیم توسط فلسک شناسایی نشوند، اما نتیجه‌ای نادرست تولید می‌کنند. مثلاً فرض کنید برنامه‌ای بنویسید که سن کاربر را از روی سال تولد محاسبه کند، اما فرمول را اشتباه پیاده‌سازی کنید. در این حالت برنامه خطای واضحی نشان نمی‌دهد، اما خروجی اشتباه است. این نوع خطاها معمولاً با تست کردن و بررسی دقیق منطق برنامه کشف می‌شوند.

در فلسک، خطاها به‌صورت استثناهای پایتون (Exceptions) مدیریت می‌شوند. وقتی یک خطا رخ می‌دهد، فلسک یک شیء استثنا ایجاد می‌کند که حاوی اطلاعاتی مانند کد خطا، پیام خطا و مسیری که خطا در آن رخ داده است، می‌باشد. یکی از پرکاربردترین این استثناها، werkzeug.exceptions.NotFound است که معادل خطای ۴۰۴ می‌باشد. همچنین werkzeug.exceptions.InternalServerError معادل خطای ۵۰۰ است. شما می‌توانید با استفاده از دستور abort() در فلسک، به‌صورت دستی یک خطا را فعال کنید. مثلاً اگر در تابعی تشخیص دهید که کاربر مجاز به دیدن صفحه‌ای نیست، می‌توانید بنویسید abort(403) تا خطای ممنوعیت دسترسی نمایش داده شود.

نکته مهم دیگر این است که فلسک به‌صورت پیش‌فرض در حالت توسعه (Development Mode) خطاهای دقیق و کامل را در مرورگر نمایش می‌دهد تا توسعه‌دهنده بتواند مشکل را سریع‌تر پیدا کند. اما در حالت اجرا (Production Mode)، این اطلاعات حساس نمایش داده نمی‌شوند و فقط یک صفحه خطای ساده به کاربر نشان داده می‌شود. به همین دلیل، در محیط واقعی باید صفحات خطای سفارشی طراحی کنید تا هم امنیت حفظ شود و هم تجربه کاربری بهتری ارائه دهید.

پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2
  • 3