Java 8-এ java.time প্যাকেজের অন্তর্গত টাইম API দিয়ে তারিখ এবং সময়ের কাজগুলো আরও সহজ এবং দক্ষ হয়েছে। এই API-এর মধ্যে DateTimeFormatter নামক ক্লাসটি রয়েছে, যা তারিখ এবং সময়ের স্ট্রিং ইনপুটকে নির্দিষ্ট ফরম্যাটে প্যার্স (parse) করতে ব্যবহৃত হয়। তবে, যখন আপনি একটি স্ট্রিং প্যার্স করেন, তখন ভুল ফরম্যাটের কারণে parsing exceptions হতে পারে। এই পোস্টে আমরা parsing exceptions এবং তাদের exception handling সম্পর্কে আলোচনা করব।
DateTimeFormatter: প্যার্সিং করার জন্য ব্যবহারযোগ্য ফরম্যাটার
DateTimeFormatter ক্লাসটি তারিখ এবং সময়ের স্ট্রিংকে পার্স করার জন্য ব্যবহার করা হয়। এটি স্ট্রিংয়ের নির্দিষ্ট ফরম্যাটের সাথে মিলিয়ে একটি LocalDate, LocalTime, LocalDateTime, ZonedDateTime, ইত্যাদি তৈরি করতে সহায়ক।
Common Parsing Exceptions in DateTimeFormatter:
DateTimeParseException: এটি সবচেয়ে সাধারণ parsing exception, যা ঘটে যখন ইনপুট স্ট্রিংটি নির্দিষ্ট ফরম্যাটের সাথে মেলে না।
DateTimeParseException Exception Handling:
DateTimeParseException হল একটি unchecked exception যা DateTimeFormatter এর parse() মেথড ব্যবহারের সময় তখন ঘটে যখন স্ট্রিংটির ফরম্যাট অসঠিক বা অযোগ্য হয়। এই exceptionটি DateTimeFormatter দ্বারা স্ট্রিংকে টাইম অবজেক্টে প্যার্স করার সময় উত্থাপিত হয়।
Example: DateTimeParseException Example
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class DateTimeParseExceptionExample {
public static void main(String[] args) {
String dateStr = "2024-13-45"; // Invalid date (13th month and 45th day)
// Define a formatter for the expected date format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
// Try to parse the date string
LocalDate date = LocalDate.parse(dateStr, formatter);
System.out.println("Parsed date: " + date);
} catch (DateTimeParseException e) {
// Handle parsing exception
System.out.println("Error parsing date: " + e.getMessage());
}
}
}
Output:
Error parsing date: Text '2024-13-45' could not be parsed at index 5
ব্যাখ্যা:
- এখানে
dateStrহিসাবে"2024-13-45"একটি ভুল তারিখ, কারণ মাস 13 এবং দিন 45 বৈধ নয়। ফলে,DateTimeParseExceptionউঠে এবং একটি ত্রুটি বার্তা দেওয়া হয়।
Exception Handling: DateTimeParseException
DateTimeParseException হ্যান্ডলিংয়ের জন্য সাধারণত try-catch ব্লক ব্যবহার করা হয়। যখন স্ট্রিংটি নির্দিষ্ট DateTimeFormatter ফরম্যাটের সাথে মেলে না, তখন এই exceptionটি ফেলে দেওয়া হয়। আপনি এই exceptionটি ধরতে এবং সেই অনুযায়ী ত্রুটি বার্তা বা কাস্টম হ্যান্ডলিং ব্যবস্থা করতে পারেন।
Example: Catching DateTimeParseException for Multiple Formats
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class MultiFormatDateParseExample {
public static void main(String[] args) {
String dateStr = "2024/12/23"; // Invalid format for default formatter
// Define two possible formatters
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy/MM/dd");
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
// Try to parse the date string using the first format
LocalDate date = LocalDate.parse(dateStr, formatter1);
System.out.println("Parsed date: " + date);
} catch (DateTimeParseException e1) {
try {
// If the first format fails, try the second one
LocalDate date = LocalDate.parse(dateStr, formatter2);
System.out.println("Parsed date: " + date);
} catch (DateTimeParseException e2) {
System.out.println("Error parsing date: " + e2.getMessage());
}
}
}
}
Output:
Parsed date: 2024-12-23
ব্যাখ্যা:
- এখানে প্রথমে
"2024/12/23"স্ট্রিংটিformatter1ব্যবহার করে প্যার্স করার চেষ্টা করা হয়েছে। যদি এটি ব্যর্থ হয়, তবে পরবর্তীতেformatter2দিয়ে প্যার্স করার চেষ্টা করা হয়। DateTimeParseExceptionযখন একটি নির্দিষ্ট ফরম্যাটে স্ট্রিং প্যার্স করা যায় না, তখন দ্বিতীয় ফরম্যাটটি ব্যবহার করা হয়।
Using DateTimeFormatter with Custom Error Handling
DateTimeFormatter ক্লাসের parse() মেথডে DateTimeParseException ব্যতিক্রমটি সহজে ধরতে এবং ত্রুটির কারণে কোডের অপ্রত্যাশিত আচরণ আটকানো সম্ভব।
Example: Handling Invalid Date Formats Gracefully
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class DateTimeParseGracefullyExample {
public static void main(String[] args) {
String[] dateStrings = {"2024-12-23", "2024-13-45", "2024-02-30"};
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
for (String dateStr : dateStrings) {
try {
LocalDate date = LocalDate.parse(dateStr, formatter);
System.out.println("Parsed date: " + date);
} catch (DateTimeParseException e) {
System.out.println("Error parsing date '" + dateStr + "': " + e.getMessage());
}
}
}
}
Output:
Parsed date: 2024-12-23
Error parsing date '2024-13-45': Text '2024-13-45' could not be parsed at index 5
Error parsing date '2024-02-30': Text '2024-02-30' could not be parsed at index 8
ব্যাখ্যা:
DateTimeParseExceptionগ্রাস করে একটি ভুল তারিখের জন্য ত্রুটি বার্তা প্রদান করছে, কিন্তু অন্য সঠিক তারিখগুলির জন্য প্যার্সিং সফল হয়েছে।
- Parsing Exceptions:
DateTimeParseExceptionহল একটি সাধারণ exception যা ঘটে যখনDateTimeFormatterদিয়ে স্ট্রিং প্যার্স করার চেষ্টা করা হয় এবং স্ট্রিংটি নির্দিষ্ট ফরম্যাটের সাথে মেলে না। - Exception Handling:
try-catchব্লক ব্যবহার করে এই exception হ্যান্ডল করা যায়, এবং একাধিক ফরম্যাটে স্ট্রিং প্যার্স করার জন্য বিভিন্ন পদ্ধতি প্রয়োগ করা যায়। - Graceful Parsing: ব্যবহারকারী ইনপুট বা ডেটা ভ্যালিডেশন করার সময় আপনি
DateTimeParseExceptionক্যাচ করে সঠিক বার্তা দিয়ে গ্রেসফুল হ্যান্ডলিং করতে পারেন।
এইভাবে DateTimeParseException হ্যান্ডলিংয়ের মাধ্যমে আপনি টাইম এবং তারিখ সম্পর্কিত প্যার্সিং ত্রুটিগুলি আরও কার্যকরভাবে ম্যানেজ করতে পারেন।
Read more