Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा में एक IllegalArgumentException को कैसे हल करें?


एक अवैध आर्ग्यूमेंट अपवाद यह इंगित करने के लिए फेंका जाता है कि एक विधि को एक अवैध तर्क पारित किया गया है। यह अपवाद रनटाइम अपवाद . का विस्तार करता है वर्ग और इस प्रकार, उन अपवादों से संबंधित है जिन्हें जावा वर्चुअल मशीन (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 अन्य उपयोगकर्ताओं से आने वाले इनपुट को मान्य करने के लिए है।
  • अगर हम 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. जावा में डिफ़ॉल्ट विधियों का उपयोग करके हीरे की समस्या को कैसे हल करें

    विरासत दो वर्गों के बीच एक संबंध है जहां एक वर्ग दूसरे वर्ग के गुणों को प्राप्त करता है। इस संबंध को - . के रूप में विस्तृत कीवर्ड का उपयोग करके परिभाषित किया जा सकता है public class A extends B{} जिस वर्ग को गुण विरासत में मिलते हैं उसे उप वर्ग या बाल वर्ग के रूप में जाना जाता है और जिस वर्ग की स

  1. जावा में एक IllegalArgumentException को कैसे हल करें?

    एक अवैध आर्ग्यूमेंट अपवाद यह इंगित करने के लिए फेंका जाता है कि एक विधि को एक अवैध तर्क पारित किया गया है। यह अपवाद रनटाइम अपवाद . का विस्तार करता है वर्ग और इस प्रकार, उन अपवादों से संबंधित है जिन्हें जावा वर्चुअल मशीन (JVM) के संचालन के दौरान फेंका जा सकता है। यह एक अनियंत्रित अपवाद है और इस प्र

  1. जावा में JSON को कैसे पार्स करें

    इस ट्यूटोरियल में हम देखेंगे कि विभिन्न पुस्तकालयों का उपयोग करके जावा में JSON को कैसे पार्स किया जाए। JSON जावास्क्रिप्ट ऑब्जेक्ट नोटेशन के लिए खड़ा है, और यह जावास्क्रिप्ट के सबसेट पर आधारित है। डेटा-एक्सचेंज प्रारूप के रूप में, यह वेब प्रोग्रामिंग में व्यापक रूप से उपयोग किया जाता है। यहां हम