Exception Handling ওয়েব অ্যাপ্লিকেশনে গুরুত্বপূর্ণ একটি অংশ, যেহেতু এটি ত্রুটির পরিস্থিতি পরিচালনা করে এবং ব্যবহারকারীকে সুন্দরভাবে সাড়া দেয়। Apache Tapestry একটি শক্তিশালী Exception Handling সিস্টেম সরবরাহ করে, যা অ্যাপ্লিকেশনে ঘটে যাওয়া ত্রুটির জন্য কাস্টম error pages তৈরি করতে সহায়তা করে।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Tapestry তে Custom Error Pages তৈরি করা যায়, যাতে আপনার ওয়েব অ্যাপ্লিকেশন ত্রুটি ঘটলে ব্যবহারকারীকে সুন্দর এবং বুঝতে সহজভাবে ত্রুটির তথ্য দেখাতে পারে।
Tapestry Exception Handling Overview
Tapestry-তে Exception Handling একটি নির্দিষ্ট পদ্ধতি অনুসরণ করে। যদি কোনও runtime exception ঘটে, Tapestry একটি default error page প্রদর্শন করে। তবে, আপনি চাইলে কাস্টম error page বা exception handler তৈরি করতে পারেন।
Tapestry তে exception handling জন্য দুটি সাধারণ পদ্ধতি রয়েছে:
- Global Exception Handling - সমস্ত অ্যাপ্লিকেশন-level exception গুলোর জন্য একটি কাস্টম error page বা handler তৈরি করা।
- Specific Exception Handling - নির্দিষ্ট পেজ বা ক্লাসের জন্য exception handling করা।
কাস্টম Exception পেজ তৈরি করা
Tapestry তে কাস্টম error page তৈরি করতে হলে কয়েকটি ধাপ অনুসরণ করতে হবে।
ধাপ ১: Error Page তৈরি
প্রথমে একটি নতুন পেজ তৈরি করুন যা ত্রুটি ঘটলে ব্যবহারকারীর কাছে প্রদর্শিত হবে।
- HTML টেমপ্লেট (error.tml):
<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একটি প্যারামিটার যা ত্রুটির বিস্তারিত মেসেজ ধারণ করবে।- আপনি চাইলে আরও তথ্য যেমন, স্ট্যাক ট্রেস বা নির্দিষ্ট ত্রুটি কোড প্রদর্শন করতে পারেন।
ধাপ ২: Java ক্লাস তৈরি করা
Tapestry-তে কাস্টম error page তৈরি করতে Java ক্লাসে error message সংরক্ষণ করা যায়। এই ক্লাসটি সেই error page টির জন্য একটি controller হিসেবে কাজ করবে।
- Error Page Java ক্লাস (ErrorPage.java):
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-এ ত্রুটি বার্তা পাঠানোর জন্য ব্যবহার করা হয়।
ধাপ ৩: Global Exception Handling Configuration
Tapestry-তে সব অ্যাপ্লিকেশনের জন্য একটি global exception handler সেট আপ করা যেতে পারে, যা অ্যাপ্লিকেশন জুড়ে সমস্ত ত্রুটির জন্য একটি কাস্টম error page ব্যবহার করবে।
- AppModule.java (Global Exception Handling Configuration):
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);
}
}
- CustomExceptionHandler.java (Exception Handler):
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));
}
}
এখানে:
- CustomExceptionHandler ক্লাসটি সমস্ত অ্যাপ্লিকেশন-level exception গুলি ক্যাপচার করে এবং ব্যবহারকারীকে কাস্টম error page-এ রিডাইরেক্ট করে।
ধাপ ৪: Error Page এর জন্য URL Mapping
এখন, আপনাকে অ্যাপ্লিকেশনের URL routing এর মাধ্যমে ErrorPage পেজটি সঠিকভাবে রাউট করতে হবে।
- tapestry.xml (URL ম্যানেজমেন্ট):
<component-type>error</component-type>
<page-mappings>
<page-mapping id="error" page="ErrorPage"/>
</page-mappings>
এটি Tapestry-কে নির্দেশ দেয় যে error URL পেতে গেলে এটি ErrorPage পেজে রিডাইরেক্ট করবে।
ধাপ ৫: Exception Handling Testing
আপনি যদি কোনো বিশেষ পেজ বা অ্যাপ্লিকেশন-লেভেল exception চান, তবে সেই পেজের কোনো ভুল ইনপুট অথবা নিষিদ্ধ অ্যাকশন থেকে ত্রুটি তৈরি করতে পারেন এবং আপনার custom error page চেক করতে পারেন।
Tapestry Exception Handling-এ Additional Tips
- Specific Exception Handling:
- আপনি চাইলে নির্দিষ্ট ধরনের exceptions যেমন
NullPointerExceptionবাIllegalArgumentExceptionএর জন্য আলাদা handler তৈরি করতে পারেন।
- আপনি চাইলে নির্দিষ্ট ধরনের exceptions যেমন
- Logging:
- Exception handler এর মধ্যে logging যুক্ত করা গুরুত্বপূর্ণ। এটি আপনাকে অ্যাপ্লিকেশনে ঘটে যাওয়া ত্রুটির ট্র্যাক রাখতে সহায়ক হবে। Apache log4j বা SLF4J লাইব্রেরি ব্যবহার করে ত্রুটি লগ করা যেতে পারে।
- Redirecting to Custom Pages:
- আপনার custom error page বা রিডাইরেক্ট করার জন্য URL parameters ব্যবহার করে কাস্টম মেসেজ বা স্ট্যাটাস কোড পাঠানো যেতে পারে। উদাহরণস্বরূপ, আপনি
404 Not Foundবা500 Internal Server Errorরিডাইরেক্ট করতে পারেন।
- আপনার custom error page বা রিডাইরেক্ট করার জন্য URL parameters ব্যবহার করে কাস্টম মেসেজ বা স্ট্যাটাস কোড পাঠানো যেতে পারে। উদাহরণস্বরূপ, আপনি
সারাংশ
Tapestry তে কাস্টম exception page তৈরি করার মাধ্যমে আপনি অ্যাপ্লিকেশন জুড়ে ঘটে যাওয়া ত্রুটির জন্য একটি পরিষ্কার এবং ব্যবহারকারী-বান্ধব অভিজ্ঞতা প্রদান করতে পারেন। Global Exception Handling এবং specific exception handler ব্যবহার করে আপনি অ্যাপ্লিকেশনের ত্রুটিগুলি সঠিকভাবে ধরতে পারেন এবং একটি কাস্টম error page প্রদর্শন করতে পারেন, যাতে ব্যবহারকারী বুঝতে পারেন কী সমস্যা ঘটেছে।
Read more