Exception Handling এবং Error Logging গাইড ও নোট

Web Development - এমভিসি ফ্রেমওয়ার্ক (MVC Framework) - Error Handling এবং Logging
200

Exception Handling এবং Error Logging এমভিসি ফ্রেমওয়ার্কে খুবই গুরুত্বপূর্ণ দুটি উপাদান, যা অ্যাপ্লিকেশন ডেভেলপমেন্টে কার্যকরী ত্রুটি ব্যবস্থাপনা এবং সমস্যা শনাক্তকরণের জন্য ব্যবহৃত হয়। এই প্রক্রিয়াগুলি অ্যাপ্লিকেশনের স্থিতিশীলতা, পারফরম্যান্স এবং ডিবাগিং প্রক্রিয়া উন্নত করতে সাহায্য করে।

Exception Handling (এক্সেপশন হ্যান্ডলিং)


Exception Handling হলো প্রোগ্রামিংয়ের একটি প্রক্রিয়া যার মাধ্যমে অপ্রত্যাশিত ত্রুটির (যেমন, ডিভাইড বাই জিরো, ফাইল না পাওয়া, ডেটাবেস সংযোগ সমস্যা) প্রতি সঠিক প্রতিক্রিয়া প্রদান করা হয়। এমভিসি ফ্রেমওয়ার্কে try-catch ব্লক ব্যবহার করে এক্সেপশন হ্যান্ডল করা হয়। এক্সেপশন হ্যান্ডলিং নিশ্চিত করে যে অ্যাপ্লিকেশন ক্র্যাশ না করে, সঠিকভাবে ত্রুটির বার্তা ব্যবহারকারীর কাছে পৌঁছায় এবং প্রোগ্রাম চালু থাকে।

Exception Handling Example (ASP.NET MVC)

public ActionResult Index()
{
    try
    {
        // কিছু কোড যা ত্রুটি সৃষ্টি করতে পারে
        int result = 10 / 0; // Division by zero exception
        return View();
    }
    catch (DivideByZeroException ex)
    {
        // DivideByZeroException হ্যান্ডল করা হচ্ছে
        ViewBag.ErrorMessage = "Cannot divide by zero!";
        return View("Error");
    }
    catch (Exception ex)
    {
        // অন্যান্য সব এক্সেপশন হ্যান্ডল করা হচ্ছে
        ViewBag.ErrorMessage = "An unexpected error occurred: " + ex.Message;
        return View("Error");
    }
}

এখানে, যদি 10 / 0 কোড চলানোর সময় DivideByZeroException ঘটতে থাকে, তখন সেটা catch ব্লকের মাধ্যমে হ্যান্ডল করা হয় এবং ইউজারকে একটি ভুল বার্তা প্রদর্শন করা হয়। যদি অন্য কোনো ত্রুটি ঘটে, তবে সাধারণ Exception কেএছ করা হয়।


Global Exception Handling (গ্লোবাল এক্সেপশন হ্যান্ডলিং)


এমভিসি ফ্রেমওয়ার্কে গ্লোবাল এক্সেপশন হ্যান্ডলিং সাধারণত Application_Error মেথডের মাধ্যমে করা হয়, যা Global.asax ফাইলে থাকে। এখানে আপনি অ্যাপ্লিকেশন পর্যায়ে সব ধরনের এক্সেপশন হ্যান্ডল করতে পারেন।

Global Exception Handling Example

// Global.asax.cs ফাইলে
protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();
    Server.ClearError();

    // লগিং মেথড কল করা
    LogError(exception);

    // ইউজারকে একটি সাধারণ ত্রুটি পেজে রিডাইরেক্ট করা
    Response.Redirect("~/Error");
}

এখানে, যদি অ্যাপ্লিকেশনটির কোনো অংশে এক্সেপশন ঘটে, তবে Application_Error মেথড কার্যকর হবে এবং সেই এক্সেপশনটি LogError() মেথডের মাধ্যমে লগ করা হবে এবং তারপর ইউজারকে সাধারণ ত্রুটি পেজে রিডাইরেক্ট করা হবে।


Error Logging (এরর লগিং)


Error Logging হলো ত্রুটি বা এক্সেপশন সংক্রান্ত তথ্য সংগ্রহের প্রক্রিয়া যা পরবর্তীতে ডিবাগিং এবং ত্রুটি শনাক্তকরণের জন্য ব্যবহৃত হয়। এটি ডেভেলপারদের ত্রুটির সঠিক কারণ নির্ধারণ করতে সাহায্য করে। Error Logging একটি গুরুত্বপূর্ণ অংশ কারণ এটি অ্যাপ্লিকেশনের যে কোনো সমস্যা দ্রুত সমাধান করতে সহায়তা করে।

Error Logging Example (ASP.NET MVC)

ASP.NET MVC তে Error Logging করার জন্য সাধারণত log4net বা Serilog এর মতো থার্ড-পার্টি লাইব্রেরি ব্যবহার করা হয়।

log4net ব্যবহার করে Error Logging:
  1. log4net সেটআপ:
    • প্রথমে, log4net প্যাকেজটি NuGet থেকে ইনস্টল করতে হবে।

      Install-Package log4net
      
  2. Web.config ফাইলে log4net কনফিগারেশন:

    <configuration>
        <configSections>
            <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
        </configSections>
        
        <log4net>
            <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
                </layout>
            </appender>
            <root>
                <level value="DEBUG" />
                <appender-ref ref="ConsoleAppender" />
            </root>
        </log4net>
    </configuration>
    
  3. log4net ব্যবহার করে ত্রুটি লগ করা:

    using log4net;
    using System;
    
    public class HomeController : Controller
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(HomeController));
    
        public ActionResult Index()
        {
            try
            {
                int result = 10 / 0; // This will throw an exception
                return View();
            }
            catch (Exception ex)
            {
                log.Error("An error occurred", ex); // লগিং করা হচ্ছে
                return View("Error");
            }
        }
    }
    

এখানে, যখন কোনো ত্রুটি ঘটে, তা log.Error() মেথড ব্যবহার করে লগ করা হবে। লগটি কনসোলে প্রদর্শিত হবে কারণ এখানে ConsoleAppender ব্যবহার করা হয়েছে।


Custom Error Pages (কাস্টম এরর পেজ)


এমভিসি ফ্রেমওয়ার্কে আপনি Custom Error Pages তৈরি করতে পারেন, যা ব্যবহারকারীকে সুন্দরভাবে ত্রুটি বার্তা প্রদর্শন করবে। অ্যাপ্লিকেশনটি চলার সময় যে কোনো ত্রুটি ঘটলে, অ্যাপ্লিকেশন সেই ত্রুটি পেজে রিডাইরেক্ট করতে পারে।

Custom Error Page Example (ASP.NET MVC)

  1. Web.config ফাইলে Error Pages কনফিগারেশন:

    <configuration>
      <system.web>
          <customErrors mode="On">
              <error statusCode="404" redirect="~/Error/PageNotFound" />
              <error statusCode="500" redirect="~/Error/InternalServerError" />
          </customErrors>
      </system.web>
    </configuration>
    
  2. Error Controller তৈরি করুন:

    public class ErrorController : Controller
    {
        public ActionResult PageNotFound()
        {
            return View();
        }
    
        public ActionResult InternalServerError()
        {
            return View();
        }
    }
    

এখানে, যখন কোনো 404 (পেজ না পাওয়া) বা 500 (ইনটার্নাল সার্ভার এরর) ত্রুটি ঘটে, তখন ইউজারকে ErrorController এর কাস্টম পেজে রিডাইরেক্ট করা হবে।


সার্বিকভাবে


Exception Handling এবং Error Logging এমভিসি ফ্রেমওয়ার্কে অ্যাপ্লিকেশন ডেভেলপমেন্টের গুরুত্বপূর্ণ অংশ। এগুলি অ্যাপ্লিকেশনটির স্থিতিশীলতা এবং নিরাপত্তা নিশ্চিত করতে সাহায্য করে। Exception Handling দ্বারা ত্রুটির কার্যকরী হ্যান্ডলিং করা হয়, এবং Error Logging দ্বারা ত্রুটির বিশ্লেষণ এবং ডিবাগিং প্রক্রিয়া সহজ হয়। এই দুটি উপাদান একত্রে অ্যাপ্লিকেশনের পরিপূর্ণতা এবং কার্যকারিতা বজায় রাখতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By
Promotion

Are you sure to start over?

Loading...