Exception Handling Middleware

Web Development - এএসপি ডট (ASP.Net) - Logging এবং Error হ্যান্ডলিং |

Exception Handling Middleware হলো ASP.Net Core অ্যাপ্লিকেশনে ইস্যু বা ত্রুটি (exception) ধরার এবং যথাযথভাবে প্রতিক্রিয়া জানানোর একটি মেকানিজম। এটি ডেভেলপারদের সুবিধার্থে বিভিন্ন ধরনের ত্রুটি যেমন, সিস্টেম ত্রুটি (system errors), ইনপুট ভুল ত্রুটি (input validation errors), এবং অন্যান্য ব্যতিক্রম (exceptions) সমাধান করতে সাহায্য করে।

ASP.Net Core এ Middleware হলো পিপলাইন স্তরের কম্পোনেন্ট যা HTTP রিকোয়েস্ট প্রসেসিংয়ের মধ্যবর্তী পর্যায়ে কাজ করে। Exception Handling Middleware এর মাধ্যমে অ্যাপ্লিকেশন উন্নত এবং নির্ভরযোগ্যভাবে কাজ করতে পারে।


Exception Handling Middleware এর প্রয়োজনীয়তা

অ্যাপ্লিকেশনে ত্রুটি ঘটলে যদি ত্রুটির সঠিকভাবে হ্যান্ডেলিং না করা হয়, তাহলে:

  • ব্যবহারকারীরা ভুল বার্তা বা অস্বাভাবিক আচরণ দেখতে পারে।
  • অ্যাপ্লিকেশন ক্র্যাশ হতে পারে, যার ফলে সার্ভার ডাউন হয়ে যাওয়ার সম্ভাবনা থাকে।
  • নিরাপত্তার সমস্যাও সৃষ্টি হতে পারে, কারণ ত্রুটির বিস্তারিত তথ্য বাইরে চলে আসতে পারে।

Exception Handling Middleware এই ধরনের সমস্যা সমাধান করে এবং ত্রুটি ঘটলে ব্যবহারকারী বা ডেভেলপারকে নির্দিষ্ট ভাবে জানায়, যাতে অ্যাপ্লিকেশন সঠিকভাবে চলতে পারে।


ASP.Net Core এ Exception Handling Middleware ব্যবহার

ASP.Net Core অ্যাপ্লিকেশনে Exception Handling Middleware সেটআপ করতে, Startup.cs ফাইলে Configure মেথডে UseExceptionHandler অথবা UseDeveloperExceptionPage মেথড ব্যবহার করতে হয়।

১. UseExceptionHandler Middleware

UseExceptionHandler এর মাধ্যমে আপনি একটি কাস্টম ত্রুটি পৃষ্ঠা (error page) নির্দিষ্ট করতে পারেন। এটি প্রোডাকশন পরিবেশে ত্রুটি হ্যান্ডল করার জন্য আদর্শ।

উদাহরণ:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage(); // ডেভেলপমেন্ট পরিবেশে ডেভেলপার ত্রুটি পৃষ্ঠা
    }
    else
    {
        app.UseExceptionHandler("/Home/Error"); // প্রোডাকশনে কাস্টম ত্রুটি পৃষ্ঠা
        app.UseHsts(); // HSTS কনফিগারেশন
    }

    // অন্যান্য Middleware
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();
    app.UseAuthorization();
    app.MapControllers();
}

এখানে, যদি অ্যাপ্লিকেশন ডেভেলপমেন্ট মোডে থাকে, তবে UseDeveloperExceptionPage() ব্যবহার করা হয়, যা ত্রুটির বিস্তারিত বার্তা দেখায়। তবে যদি প্রোডাকশন পরিবেশে অ্যাপ্লিকেশন চলছে, তবে UseExceptionHandler("/Home/Error") ব্যবহার করা হবে, যেখানে /Home/Error পৃষ্ঠায় একটি কাস্টম ত্রুটি বার্তা দেখানো হবে।


২. UseDeveloperExceptionPage Middleware

ডেভেলপমেন্ট পরিবেশে UseDeveloperExceptionPage ব্যবহার করা হয়, যা ত্রুটির বিস্তারিত লগ এবং স্ট্যাক ট্রেস প্রদর্শন করে। এটি ডেভেলপারদের সমস্যা শনাক্ত করতে সহায়তা করে। তবে প্রোডাকশনে এটি ব্যবহৃত হলে নিরাপত্তার জন্য এটি বিপদজনক হতে পারে, কারণ এটি বিস্তারিত ত্রুটি বার্তা প্রকাশ করে।

উদাহরণ:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage(); // ডেভেলপমেন্টে ত্রুটি স্ট্যাক ট্রেস সহ দেখাবে
    }
    else
    {
        app.UseExceptionHandler("/Home/Error"); // প্রোডাকশনে কাস্টম ত্রুটি পৃষ্ঠা
    }
    // অন্যান্য Middleware
}

কাস্টম Error Page তৈরি করা

UseExceptionHandler এর মাধ্যমে কাস্টম ত্রুটি পৃষ্ঠা তৈরি করা যায়, যেখানে আপনি ব্যবহারকারীর জন্য একটি সাধারণ ত্রুটি বার্তা এবং বিকল্প পথ প্রদান করতে পারেন। যেমন একটি Error পৃষ্ঠা তৈরি করা:

ErrorController:

public class HomeController : Controller
{
    public IActionResult Error()
    {
        return View(); // একটি কাস্টম error view রেন্ডার করবে
    }
}

Error.cshtml:

@{
    Layout = "_Layout";
}

<h1>Something went wrong!</h1>
<p>Sorry, there was a problem with your request. Please try again later.</p>

এখানে, /Home/Error পৃষ্ঠাটি ব্যবহারকারীদের একটি সাধারণ ত্রুটি বার্তা দেখাবে।


Exception Handling এর সাথে Logging ব্যবহার করা

ASP.Net Core অ্যাপ্লিকেশনে Logging সহ Exception Handling আরও কার্যকরী করা যেতে পারে। আপনি ত্রুটির লগ রাখতে পারেন, যাতে ডেভেলপাররা ত্রুটির বিশ্লেষণ করতে পারে এবং সমস্যাগুলি সমাধান করতে পারে।

উদাহরণ:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
    app.UseExceptionHandler(errorApp =>
    {
        errorApp.Run(async context =>
        {
            var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
            var exception = exceptionHandlerPathFeature?.Error;

            logger.LogError($"Exception occurred: {exception?.Message}");

            context.Response.Redirect("/Home/Error");
        });
    });
}

এখানে, ILogger ব্যবহার করে ত্রুটি লগ করা হয়েছে এবং তারপর ব্যবহারকারীকে /Home/Error পৃষ্ঠায় রিডাইরেক্ট করা হয়েছে।


সারসংক্ষেপ

Exception Handling Middleware ASP.Net Core অ্যাপ্লিকেশনগুলিতে ত্রুটি পরিচালনার জন্য একটি গুরুত্বপূর্ণ অংশ। এটি ত্রুটির কারণে অ্যাপ্লিকেশন ক্র্যাশ হওয়া আটকায় এবং ব্যবহারকারীকে সঠিকভাবে ত্রুটি বার্তা প্রদর্শন করে। UseExceptionHandler এবং UseDeveloperExceptionPage মেথডের মাধ্যমে আপনি ত্রুটি হ্যান্ডলিং কাস্টমাইজ করতে পারেন, এবং লগিং ব্যবহারের মাধ্যমে ত্রুটির বিশ্লেষণ করতে পারেন।

Content added By
Promotion