UnsupportedTemporalTypeException এবং অন্যান্য কমন Exceptions

Java Technologies - জাভা টাইম প্যাকেজ (Java.time Package) - Java.time প্যাকেজে Exception Handling
133

java.time প্যাকেজে কাজ করার সময় বিভিন্ন ধরনের exceptions ঘটে, যা আপনার কোডের কার্যকারিতা প্রভাবিত করতে পারে। একটি গুরুত্বপূর্ণ exception হলো UnsupportedTemporalTypeException, যা নির্দিষ্ট temporal ফিচারের জন্য অবৈধ বা সমর্থনহীন অপারেশন নির্দেশ করে।

এছাড়া, Java java.time প্যাকেজে কিছু কমন exceptions রয়েছে যা স্ট্রিং পার্সিং, তারিখের গণনা, বা টাইমজোনের সমস্যা হলে ঘটতে পারে। এখানে আমরা UnsupportedTemporalTypeException এবং অন্যান্য কমন java.time exceptions নিয়ে আলোচনা করব।

1. UnsupportedTemporalTypeException

UnsupportedTemporalTypeException হচ্ছে একটি RuntimeException যা তখন থ্রো করা হয় যখন আপনি কোনো Temporal অবজেক্টে একটি অ-সমর্থিত অপারেশন করার চেষ্টা করেন। এটি সাধারণত ঘটে যখন আপনি একটি নির্দিষ্ট টাইম ইউনিট (যেমন: মাস, দিন, ঘণ্টা) কোন Temporal অবজেক্টে প্রয়োগ করতে চান এবং তা সমর্থিত না হয়।

উদাহরণ:

ধরা যাক, আপনি LocalDate থেকে ঘণ্টা বা মিনিট বের করার চেষ্টা করছেন। যেহেতু LocalDate শুধুমাত্র তারিখ ধারণ করে, সুতরাং ঘণ্টা বা মিনিটের মতো সময়ের মান পাওয়ার চেষ্টা করলে UnsupportedTemporalTypeException ঘটবে।

import java.time.LocalDate;
import java.time.temporal.UnsupportedTemporalTypeException;

public class UnsupportedTemporalTypeExceptionExample {
    public static void main(String[] args) {
        try {
            LocalDate date = LocalDate.of(2024, 12, 23);
            
            // Trying to get hour from LocalDate, which is unsupported
            int hour = date.getHour();  // This will throw UnsupportedTemporalTypeException
            
        } catch (UnsupportedTemporalTypeException e) {
            System.out.println("Exception caught: " + e);
        }
    }
}

আউটপুট:

Exception caught: java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay

ব্যাখ্যা:

  • LocalDate অবজেক্টে getHour() কল করা সম্ভব নয় কারণ LocalDate শুধুমাত্র তারিখ (year, month, day) ধারণ করে, এবং সময়ের অন্যান্য অংশ যেমন ঘণ্টা বা মিনিট ধারণ করে না। তাই UnsupportedTemporalTypeException থ্রো করা হয়।

2. DateTimeParseException

DateTimeParseException একটি RuntimeException যা তখন থ্রো করা হয় যখন কোনো তারিখ বা সময় স্ট্রিংটি সঠিক ফরম্যাটে না থাকে এবং তা DateTimeFormatter দ্বারা পার্স করা সম্ভব না হয়।

উদাহরণ:

import java.time.LocalDate;
import java.time.format.DateTimeParseException;

public class DateTimeParseExceptionExample {
    public static void main(String[] args) {
        try {
            // Trying to parse an invalid date format
            String dateString = "2024-13-40";  // Invalid date (13th month and 40th day)
            LocalDate date = LocalDate.parse(dateString);
            
        } catch (DateTimeParseException e) {
            System.out.println("Exception caught: " + e);
        }
    }
}

আউটপুট:

Exception caught: java.time.format.DateTimeParseException: Text '2024-13-40' could not be parsed at index 5

ব্যাখ্যা:

  • "2024-13-40" একটি ভুল তারিখ স্ট্রিং, কারণ 13 তম মাস এবং 40 তম দিন থাকতে পারে না। এর ফলে DateTimeParseException থ্রো করা হয়।

3. DateTimeException

DateTimeException একটি সাধারণ exception যা java.time প্যাকেজে তারিখ এবং সময় সম্পর্কিত যেকোনো ধরনের ভুলে ঘটতে পারে। এটি DateTimeParseException এবং UnsupportedTemporalTypeException এর সুপারক্লাস। এটি সাধারণত তারিখ, সময় বা টাইমজোন সংক্রান্ত অন্যান্য ভুলের ক্ষেত্রে ঘটতে পারে।

উদাহরণ:

import java.time.LocalDateTime;
import java.time.Month;
import java.time.DateTimeException;

public class DateTimeExceptionExample {
    public static void main(String[] args) {
        try {
            // Trying to create an invalid LocalDateTime (e.g., 31st February)
            LocalDateTime dateTime = LocalDateTime.of(2024, Month.FEBRUARY, 31, 10, 30);
            
        } catch (DateTimeException e) {
            System.out.println("Exception caught: " + e);
        }
    }
}

আউটপুট:

Exception caught: java.time.DateTimeException: Invalid date 'FEBRUARY 31' as per ISO-8601

ব্যাখ্যা:

  • LocalDateTime.of() মেথডে 31 ফেব্রুয়ারি একটি অবৈধ তারিখ হিসেবে পাঠানো হয়েছে, কারণ ফেব্রুয়ারি মাসে 31 দিন থাকতে পারে না। এ কারণে DateTimeException থ্রো হয়েছে।

4. IllegalArgumentException

IllegalArgumentException তখন থ্রো করা হয় যখন কোনো মেথডে অবৈধ বা অকার্যকর আর্গুমেন্ট পাস করা হয়। java.time প্যাকেজের Temporal অথবা DateTime সম্পর্কিত মেথডগুলিতে ভুল বা অস্বীকারযোগ্য আর্গুমেন্ট দেওয়া হলে এটি ঘটতে পারে।

উদাহরণ:

import java.time.LocalDate;
import java.time.Month;
import java.time.IllegalArgumentException;

public class IllegalArgumentExceptionExample {
    public static void main(String[] args) {
        try {
            // Creating a LocalDate with an invalid month number (e.g., 13)
            LocalDate date = LocalDate.of(2024, 13, 15);  // Invalid month 13
            
        } catch (IllegalArgumentException e) {
            System.out.println("Exception caught: " + e);
        }
    }
}

আউটপুট:

Exception caught: java.time.DateTimeException: Invalid value for MonthOfYear (valid values 1 - 12): 13

ব্যাখ্যা:

  • এখানে LocalDate.of(2024, 13, 15) তে 13 তম মাস প্রদান করা হয়েছে, যা একটি অবৈধ মাস সংখ্যা, কারণ 1 থেকে 12 পর্যন্ত মাসের সংখ্যা বৈধ। এই কারণে IllegalArgumentException বা আরো সুনির্দিষ্টভাবে DateTimeException থ্রো হয়েছে।

5. UnsupportedOperationException

UnsupportedOperationException তখন থ্রো করা হয় যখন একটি মেথড অপারেশন নিষিদ্ধ থাকে। কিছু ক্ষেত্রে java.time প্যাকেজের ক্লাসে নির্দিষ্ট অপারেশন করা সমর্থিত নয় এবং এটি থ্রো হতে পারে।

উদাহরণ:

import java.time.LocalDate;
import java.time.temporal.UnsupportedTemporalTypeException;

public class UnsupportedOperationExceptionExample {
    public static void main(String[] args) {
        try {
            LocalDate date = LocalDate.of(2024, 8, 15);
            
            // Attempting to add a month to a LocalDate (unsupported operation)
            date.plus(2, java.time.temporal.ChronoUnit.HOURS);  // Invalid operation
            
        } catch (UnsupportedOperationException e) {
            System.out.println("Exception caught: " + e);
        }
    }
}

আউটপুট:

Exception caught: java.lang.UnsupportedOperationException

ব্যাখ্যা:

  • LocalDate অবজেক্টে plus(2, ChronoUnit.HOURS) মেথড ব্যবহার করা হয়েছে, যা LocalDate অবজেক্টের জন্য সমর্থিত নয় কারণ LocalDate টাইম সুনির্দিষ্ট নয় এবং শুধু তারিখ ম্যানিপুলেশন করা হয়। তাই এটি UnsupportedOperationException থ্রো করেছে।

Summary:

  • UnsupportedTemporalTypeException: যখন আপনি একটি অ-সমর্থিত টাইম ইউনিট (যেমন ঘণ্টা, মিনিট) কোনো Temporal অবজেক্টে প্রয়োগ করতে চান।
  • DateTimeParseException: যখন স্ট্রিং থেকে তারিখ বা সময় পার্স করতে গেলে ভুল ফরম্যাটে স্ট্রিং থাকে।
  • DateTimeException: যখন তারিখ বা সময়ের অবৈধ অপারেশন (যেমন অবৈধ তারিখ) ঘটে।
  • IllegalArgumentException: যখন কোনো অবৈধ বা অকার্যকর আর্গুমেন্ট পাস করা হয়।
  • UnsupportedOperationException: যখন কোনো অপারেশন নিষিদ্ধ বা সমর্থিত নয়।

java.time প্যাকেজে কাজ করার সময় এই exceptions গুলি সাধারণত ঘটে এবং এগুলি মোকাবেলা করতে উপযুক্ত exception handling ব্যবহার করা প্রয়োজন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...