Exception Handling ওয়েব অ্যাপ্লিকেশনে গুরুত্বপূর্ণ একটি অংশ, যেহেতু এটি ত্রুটির পরিস্থিতি পরিচালনা করে এবং ব্যবহারকারীকে সুন্দরভাবে সাড়া দেয়। Apache Tapestry একটি শক্তিশালী Exception Handling সিস্টেম সরবরাহ করে, যা অ্যাপ্লিকেশনে ঘটে যাওয়া ত্রুটির জন্য কাস্টম error pages তৈরি করতে সহায়তা করে।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Tapestry তে Custom Error Pages তৈরি করা যায়, যাতে আপনার ওয়েব অ্যাপ্লিকেশন ত্রুটি ঘটলে ব্যবহারকারীকে সুন্দর এবং বুঝতে সহজভাবে ত্রুটির তথ্য দেখাতে পারে।
Tapestry-তে Exception Handling একটি নির্দিষ্ট পদ্ধতি অনুসরণ করে। যদি কোনও runtime exception ঘটে, Tapestry একটি default error page প্রদর্শন করে। তবে, আপনি চাইলে কাস্টম error page বা exception handler তৈরি করতে পারেন।
Tapestry তে exception handling জন্য দুটি সাধারণ পদ্ধতি রয়েছে:
Tapestry তে কাস্টম error page তৈরি করতে হলে কয়েকটি ধাপ অনুসরণ করতে হবে।
প্রথমে একটি নতুন পেজ তৈরি করুন যা ত্রুটি ঘটলে ব্যবহারকারীর কাছে প্রদর্শিত হবে।
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Error Page</title>
</head>
<body>
<h2>Oops! Something went wrong.</h2>
<p>An error occurred while processing your request. Please try again later.</p>
<p t:if="errorMessage != null">
Error Details: ${errorMessage}
</p>
</body>
</html>
এখানে:
errorMessage
একটি প্যারামিটার যা ত্রুটির বিস্তারিত মেসেজ ধারণ করবে।Tapestry-তে কাস্টম error page তৈরি করতে Java ক্লাসে error message সংরক্ষণ করা যায়। এই ক্লাসটি সেই error page টির জন্য একটি controller হিসেবে কাজ করবে।
package com.example.pages;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
public class ErrorPage {
@Property
private String errorMessage;
// ত্রুটির বিস্তারিত লজিক এখানে যুক্ত করুন
public void onActivate(String message) {
this.errorMessage = message; // ত্রুটি বার্তা সেট করুন
}
}
এখানে:
errorMessage
ফিল্ডে ত্রুটির বিস্তারিত তথ্য সেট করা হয়।onActivate()
মেথডটি কাস্টম error page-এ ত্রুটি বার্তা পাঠানোর জন্য ব্যবহার করা হয়।Tapestry-তে সব অ্যাপ্লিকেশনের জন্য একটি global exception handler সেট আপ করা যেতে পারে, যা অ্যাপ্লিকেশন জুড়ে সমস্ত ত্রুটির জন্য একটি কাস্টম error page ব্যবহার করবে।
package com.example.services;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.ApplicationExceptionHandler;
import org.apache.tapestry5.services.ExceptionHandler;
public class AppModule {
public static void bind(ServiceBinder binder) {
binder.bind(ApplicationExceptionHandler.class, CustomExceptionHandler.class);
}
}
package com.example.services;
import org.apache.tapestry5.services.ApplicationExceptionHandler;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.Response;
import org.apache.tapestry5.services.internal.TapestryInternalUtils;
public class CustomExceptionHandler implements ApplicationExceptionHandler {
@Override
public void handleException(Request request, Response response, Throwable exception) {
// Exception message সেট করুন
String errorMessage = exception.getMessage() != null ? exception.getMessage() : "Unknown error occurred.";
// Custom error page redirect করুন
response.sendRedirect("/error?message=" + TapestryInternalUtils.encodeURIComponent(errorMessage));
}
}
এখানে:
এখন, আপনাকে অ্যাপ্লিকেশনের URL routing এর মাধ্যমে ErrorPage পেজটি সঠিকভাবে রাউট করতে হবে।
<component-type>error</component-type>
<page-mappings>
<page-mapping id="error" page="ErrorPage"/>
</page-mappings>
এটি Tapestry-কে নির্দেশ দেয় যে error
URL পেতে গেলে এটি ErrorPage পেজে রিডাইরেক্ট করবে।
আপনি যদি কোনো বিশেষ পেজ বা অ্যাপ্লিকেশন-লেভেল exception চান, তবে সেই পেজের কোনো ভুল ইনপুট অথবা নিষিদ্ধ অ্যাকশন থেকে ত্রুটি তৈরি করতে পারেন এবং আপনার custom error page চেক করতে পারেন।
NullPointerException
বা IllegalArgumentException
এর জন্য আলাদা handler তৈরি করতে পারেন।404 Not Found
বা 500 Internal Server Error
রিডাইরেক্ট করতে পারেন।Tapestry তে কাস্টম exception page তৈরি করার মাধ্যমে আপনি অ্যাপ্লিকেশন জুড়ে ঘটে যাওয়া ত্রুটির জন্য একটি পরিষ্কার এবং ব্যবহারকারী-বান্ধব অভিজ্ঞতা প্রদান করতে পারেন। Global Exception Handling এবং specific exception handler ব্যবহার করে আপনি অ্যাপ্লিকেশনের ত্রুটিগুলি সঠিকভাবে ধরতে পারেন এবং একটি কাস্টম error page প্রদর্শন করতে পারেন, যাতে ব্যবহারকারী বুঝতে পারেন কী সমস্যা ঘটেছে।
Read more