ASP.NET Core অ্যাপ্লিকেশনগুলিতে Exception Handling এবং Error Pages কাস্টমাইজ করা খুবই গুরুত্বপূর্ণ, কারণ এটি আপনার অ্যাপ্লিকেশনের ইউজার এক্সপেরিয়েন্স এবং সিস্টেমের স্থিতিশীলতা বজায় রাখতে সাহায্য করে। ASP.NET Core-এ এক্সসেপশন হ্যান্ডলিং এবং এরর পেজ কাস্টমাইজ করার জন্য কিছু বিল্ট-ইন মেকানিজম রয়েছে।
Exception Handling হল সেই প্রক্রিয়া যার মাধ্যমে অ্যাপ্লিকেশন ত্রুটি বা অপ্রত্যাশিত পরিস্থিতি ডিটেক্ট এবং হ্যান্ডেল করে। ASP.NET Core অ্যাপ্লিকেশনগুলিতে, আপনি অ্যাপ্লিকেশন চলাকালে কোনো এক্সসেপশন ঘটে গেলে তার জন্য কাস্টম প্রক্রিয়া সেট করতে পারেন।
ASP.NET Core অ্যাপ্লিকেশনে Exception Handling দুটি প্রধান জায়গায় কাজ করে:
ASP.NET Core অ্যাপ্লিকেশনে global exception handling সাধারণত middleware ব্যবহার করে করা হয়। এটি অ্যাপ্লিকেশন-wide এক্সসেপশন হ্যান্ডলিংয়ের জন্য সবচেয়ে সাধারণ পদ্ধতি।
আপনি UseExceptionHandler
middleware ব্যবহার করে অ্যাপ্লিকেশনের exception handling কাস্টমাইজ করতে পারেন। এটি এক্সসেপশন ঘটে গেলে একটি নির্দিষ্ট পেজ বা URL-এ রিডিরেক্ট করে।
public class Startup
{
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); // Development এ ডেভেলপার এক্সসেপশন পেজ দেখাবে
}
else
{
// Production-এ এক্সসেপশন হ্যান্ডলিং
app.UseExceptionHandler("/Home/Error"); // Error পেজে রিডিরেক্ট হবে
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
এখানে, যখন কোনো এক্সসেপশন ঘটে, তখন ব্যবহারকারীকে /Home/Error
পেজে রিডিরেক্ট করা হবে।
আপনার Error পেজ তৈরি করার জন্য একটি Controller তৈরি করুন।
public class HomeController : Controller
{
public IActionResult Error()
{
return View();
}
}
এখন, /Home/Error
এ একটি কাস্টম পেজ দেখাতে পারেন।
Views/Home/Error.cshtml ফাইলটি তৈরি করুন:
@{
ViewData["Title"] = "Error";
}
<h1>An error occurred while processing your request.</h1>
<p>Please try again later.</p>
এটি একটি সাধারণ error পেজ যা ব্যবহারকারীকে একটি সাধারণ ত্রুটির বার্তা দেখাবে।
ASP.NET Core-এ আপনি try-catch ব্লক ব্যবহার করে নির্দিষ্ট Controller Action বা মেথডে এক্সসেপশন হ্যান্ডলিং করতে পারেন। এটি একটি কাস্টম এক্সসেপশন হ্যান্ডলিং লজিক প্রয়োগ করতে ব্যবহৃত হয়।
public class ProductController : Controller
{
public IActionResult Details(int id)
{
try
{
var product = GetProductById(id); // একটি ফাংশন যা প্রোডাক্ট লোড করে
return View(product);
}
catch (ProductNotFoundException ex)
{
// কাস্টম এক্সসেপশন হ্যান্ডলিং
return View("Error", new ErrorViewModel { Message = "Product not found." });
}
catch (Exception ex)
{
// অন্য এক্সসেপশন হ্যান্ডলিং
return View("Error", new ErrorViewModel { Message = "An unexpected error occurred." });
}
}
}
এখানে ProductNotFoundException
যদি থ্রো হয়, তবে একটি কাস্টম মেসেজ ব্যবহারকারীকে দেখানো হবে, আর অন্য কোনো সাধারণ এক্সসেপশন হলে একটি জেনেরিক ত্রুটি বার্তা দেখানো হবে।
আপনি ASP.NET Core অ্যাপ্লিকেশনে বিভিন্ন ধরনের কাস্টম এরর পেজ তৈরি করতে পারেন, যেমন 404 Not Found বা 500 Internal Server Error। এই এরর পেজগুলো কাস্টমাইজ করা অ্যাপ্লিকেশন ব্যবহারকারীদের জন্য উন্নত এক্সপেরিয়েন্স তৈরি করে।
কাস্টম 404 Not Found পেজ তৈরির জন্য, আপনি UseStatusCodePagesWithReExecute
middleware ব্যবহার করতে পারেন। এটি যখন কোনো পৃষ্ঠা পাওয়া না যায়, তখন একটি কাস্টম 404 পেজ রিডিরেক্ট করবে।
public class Startup
{
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
// 404 Error handling
app.UseStatusCodePagesWithReExecute("/Home/StatusCode", "?code={0}");
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
এখানে, যদি 404 ত্রুটি হয়, তাহলে /Home/StatusCode
রুটে রিডিরেক্ট হবে এবং কোড প্যারামিটার হিসেবে ত্রুটির কোড পাঠানো হবে।
Views/Home/StatusCode.cshtml ফাইলটি তৈরি করুন:
@{
ViewData["Title"] = "Error";
}
<h1>Error @ViewData["code"]</h1>
<p>The page you requested could not be found.</p>
এটি একটি কাস্টম 404 পেজ যা ইউজারকে একটি ত্রুটি কোড সহ বার্তা প্রদর্শন করবে।
ASP.NET Core অ্যাপ্লিকেশনে Exception Handling এবং Error Pages কাস্টমাইজ করা খুবই গুরুত্বপূর্ণ, যা অ্যাপ্লিকেশনের স্থিতিশীলতা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। Global Error Handling এবং Action-based Error Handling এর মাধ্যমে অ্যাপ্লিকেশনের এক্সসেপশন হ্যান্ডলিং কাস্টমাইজ করা যায়। এছাড়া, 404 Error বা 500 Error পেজ কাস্টমাইজ করে আপনি একটি সুন্দর ব্যবহারকারী অভিজ্ঞতা প্রদান করতে পারেন।
common.read_more