কম্পিউটার

জাভাতে একটি অবৈধ আর্গুমেন্ট এক্সেপশন কীভাবে সমাধান করবেন?


একটি অবৈধ আর্গুমেন্ট ব্যতিক্রম ৷ একটি পদ্ধতি একটি অবৈধ যুক্তি পাস করা হয়েছে নির্দেশ করার জন্য নিক্ষেপ করা হয়. এই ব্যতিক্রমটি RuntimeException কে প্রসারিত করে ক্লাস এবং এইভাবে, সেই ব্যতিক্রমগুলির অন্তর্গত যা জাভা ভার্চুয়াল মেশিন (JVM) অপারেশনের সময় নিক্ষেপ করা যেতে পারে। এটি একটি অচেক করা ব্যতিক্রম এবং এইভাবে, এটি একটি পদ্ধতি বা কনস্ট্রাক্টরের থ্রোস ক্লজে ঘোষণা করার প্রয়োজন নেই৷

java.lang.IllegalArgumentException এর কারণ

  • যখন আর্গুমেন্ট সীমার বাইরে থাকে। উদাহরণস্বরূপ, শতাংশটি 1 থেকে 100 এর মধ্যে থাকা উচিত। ব্যবহারকারী যদি 101 প্রবেশ করে তাহলে একটি অবৈধ আর্গমেন্ট এক্সপেশন নিক্ষেপ করা হবে।
  • যখন আর্গুমেন্ট ফরম্যাট অবৈধ হয়। উদাহরণস্বরূপ, যদি আমাদের পদ্ধতির জন্য YYYY/MM/DD-এর মতো তারিখ বিন্যাস প্রয়োজন কিন্তু ব্যবহারকারী যদি YYYY-MM-DD পাস করে। তাহলে আমাদের পদ্ধতি তখন IllegalArugmentExcpetion বুঝতে পারে না নিক্ষেপ করা হবে।
  • যখন একটি পদ্ধতিতে একটি প্যারামিটার হিসাবে খালি স্ট্রিং না থাকা প্রয়োজন কিন্তু নাল স্ট্রিং পাস করা হয়৷

উদাহরণ1

public class Student {
   int m;
   public void setMarks(int marks) {
      if(marks < 0 || marks > 100)
         throw new IllegalArgumentException(Integer.toString(marks));
      else
         m = marks;
   }
   public static void main(String[] args) {
      Student s1 = new Student();
      s1.setMarks(45);
      System.out.println(s1.m);
      Student s2 = new Student();
      s2.setMarks(101);
      System.out.println(s2.m);
   }
}

আউটপুট

45
Exception in thread "main" java.lang.IllegalArgumentException: 101
at Student.setMarks(Student.java:5)
at Student.main(Student.java:15)

IllegalArgumentException সমাধানের পদক্ষেপ

  • যখন একটি অবৈধ আর্গুমেন্ট ব্যতিক্রম নিক্ষেপ করা হয়, আমাদের অবশ্যই জাভা-এর স্ট্যাক ট্রেসে কল স্ট্যাক পরীক্ষা করতে হবে এবং ভুল যুক্তি তৈরি করার পদ্ধতিটি সনাক্ত করতে হবে।
  • অবৈধ আর্গুমেন্ট ব্যতিক্রম এটি খুবই উপযোগী এবং এমন পরিস্থিতিতে এড়াতে ব্যবহার করা যেতে পারে যেখানে অ্যাপ্লিকেশনের কোডটি আনচেক করা ইনপুট ডেটা মোকাবেলা করতে হবে।
  • এই IllegalArgumentException এর প্রধান ব্যবহার অন্য ব্যবহারকারীদের কাছ থেকে আসা ইনপুট যাচাই করার জন্য।
  • যদি আমরা অবৈধ আর্গুমেন্ট ব্যতিক্রম ধরতে চাই তারপর আমরা চেষ্টা-ক্যাচ ব্লক ব্যবহার করতে পারি। এভাবে করে আমরা কিছু পরিস্থিতি সামলাতে পারি। ধরুন ক্যাচ ব্লকে যদি আমরা কোড রাখি যাতে ব্যবহারকারীকে এক্সিকিউশন বন্ধ না করে আবার ইনপুট করার সুযোগ দিতে হয়, বিশেষ করে লুপ করার ক্ষেত্রে।

উদাহরণ2

import java.util.Scanner;
public class Student {
    public static void main(String[] args) {
        String cont = "y";
        run(cont);
    }
    static void run(String cont) {
        Scanner scan = new Scanner(System.in);
        while( cont.equalsIgnoreCase("y")) {
           try {
               System.out.println("Enter an integer: ");
               int marks = scan.nextInt();
               if (marks < 0 || marks > 100)
                  throw new IllegalArgumentException("value must be non-negative and below 100");
               System.out.println( marks);
            }
            catch(IllegalArgumentException i) {
               System.out.println("out of range encouneterd. Want to continue");
               cont = scan.next();  
               if(cont.equalsIgnoreCase("Y"))
                   run(cont);
               }
          }
     }
}

আউটপুট

Enter an integer:
1
1
Enter an integer:
100
100
Enter an integer:
150
out of range encouneterd. Want to continue
y
Enter an integer:

  1. জাভাতে ডিফল্ট পদ্ধতি ব্যবহার করে ডায়মন্ড সমস্যা কীভাবে সমাধান করবেন

  2. কীভাবে জাভাতে একটি ব্যতিক্রম পুনরুদ্ধার করবেন?

  3. জাভাতে একটি অবৈধ আর্গুমেন্ট এক্সেপশন কীভাবে সমাধান করবেন?

  4. কিভাবে জাভাতে JSON পার্স করবেন