सबसे आम जावा रनटाइम त्रुटियाँ
रनटाइम त्रुटियाँ तब होती हैं जब किसी प्रोग्राम में कोई सिंटैक्स त्रुटियाँ नहीं होती हैं लेकिन कंप्यूटर को कुछ ऐसा करने के लिए कहता है जो कंप्यूटर मज़बूती से करने में असमर्थ होता है । संकलन के दौरान, कंपाइलर के पास इस प्रकार की त्रुटियों का पता लगाने की कोई तकनीक नहीं होती है। यह जेवीएम (जावा वर्चुअल मशीन) है जो प्रोग्राम चलने के दौरान इसका पता लगाता है।
· StackOverflowError Exception
· OutOfMemoryError Exception
· NegativeArraySizeException
· ArithmeticException
· ArrayIndexOutOfBoundsException
· ArrayStoreException
· UnsupportedOperationException
· NoSuchElementException
· ClassCastException
· DateTimeException
· ConcurrentModificationException
· InputMismatchException
· IllegalFormatConversionException
· NumberFormatException
· InvalidParameterException
· NullPointerException
स्टैक ओवरफ्लो त्रुटि अपवाद
StackOverflowError एक एरर है जिसे जावा पकड़ने की अनुमति नहीं देता है, उदाहरण के लिए, स्टैक स्पेस से बाहर चल रहा है, क्योंकि यह सबसे आम रनटाइम एरर में से एक है जिसका सामना किया जा सकता है।
StackOverflowError का मुख्य कारण यह है कि हमने अपने रिकर्सिव फ़ंक्शन या टेम्पलेट को उचित समाप्ति की स्थिति प्रदान नहीं की है , जिसका अर्थ है कि यह एक अनंत लूप में बदल जाएगा । इसलिए यह त्रुटि तब डाली जाती है जब जावा इसकी उपलब्ध मेमोरी से बाहर हो जाता है।
// Java program to demonstrate
// infinite recursion error
public class StackOverflowErrorClass {
static int i = 0;
// Method to print numbers
public static int printNumber(int x)
{
i = i + 2;
System.out.println(i);
return i + printNumber(i + 2);
}
public static void main(String[] args)
{
// Recursive call without any
// terminating condition
StackOverflowErrorClass.printNumber(i);
}
}
RunTime Error in java code :- Exception in thread “main” java.lang.StackOverflowError
at java.io.PrintStream.write(PrintStream.java:526)
at java.io.PrintStream.print(PrintStream.java:597)
at java.io.PrintStream.println(PrintStream.java:736)
at StackOverflowErrorClass.printNumber(StackOverflowErrorClass.java:13)
at StackOverflowErrorClass.printNumber(StackOverflowErrorClass.java:14)
at StackOverflowErrorClass.printNumber(StackOverflowErrorClass.java:14)
.
.
.
आउटऑफमेमरी त्रुटि अपवाद
थ्रेड्स में अपर्याप्त स्थान/स्मृति त्रुटि (java.lang.OutOfMemoryError)।
Java.lang.OutOfMemoryError जावा में एक रनटाइम त्रुटि है जो तब होती है जब जावा वर्चुअल मशीन ( JVM ) जावा हीप में अपर्याप्त स्थान के कारण ऑब्जेक्ट आवंटित करने में असमर्थ होती है। जावा गारबेज कलेक्टर ( जीसी ) एक नई वस्तु के लिए आवश्यक स्थान खाली नहीं कर सकता है, जो एक java.lang.OutOfMemoryError का कारण बनता है । यह त्रुटि तब भी डाली जा सकती है जब जावा वर्ग की लोडिंग का समर्थन करने के लिए मूल मेमोरी अपर्याप्त हो।
अपर्याप्त जावा हीप स्थान के कारण फेंके जाने का एक उदाहरण यहां दिया गया है:
public class OutOfMemoryErrorExample {
public static void main(String[] args) {
Integer[] myArray = new Integer[1000 * 1000 * 1000];
}
}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at OutOfMemoryErrorExample.main(OutOfMemoryErrorExample.java:8)
नकारात्मकअरे आकार अपवाद
NegativeArraySizeException जावा में एक रनटाइम अपवाद है जो तब होता है जब कोई एप्लिकेशन नकारात्मक आकार के साथ एक सरणी बनाने का प्रयास करता है । चूंकि NegativeArraySizeException एक अनियंत्रित अपवाद है ( RuntimeException को बढ़ाता है ), इसे किसी विधि या कंस्ट्रक्टर के थ्रो क्लॉज में घोषित करने की आवश्यकता नहीं है।
डेवलपर्स को सरणी आकार को सकारात्मक पूर्णांक पर सेट करना होगा। यदि कोई ऋण चिह्न सरणी आकार घोषणा में फिसल जाता है, तो यह NegativeArraySizeException को फेंक देता है।
class JavaError {
public static void main(String[] args) {
int[] arr = new int[-5]; // Negative size of the array
arr[8] = 89;
System.out.println("Something went wrong!");
}
}
java -cp /tmp/UDRgGsLLQ6 JavaError
Exception in thread "main" java.lang.NegativeArraySizeException: -5
at JavaError.main(JavaError.java:4)
अंकगणितीय अपवाद
पूर्व। शून्य त्रुटियों से विभाजित करें
डेटा हेरफेर अधिकांश जावा अनुप्रयोगों का प्राथमिक कार्य है। जब डेटा हेरफेर में विभाजन शामिल होता है, तो डेवलपर्स को शून्य से विभाजन से सावधान रहना चाहिए । यदि शून्य कभी किसी गणना में भाजक बन जाता है, तो जावा एक अंकगणितीय अपवाद फेंकता है। इसलिए हम शून्य से कुछ भी विभाजित नहीं कर सकते हैं, इसलिए जब हम ऐसा करने का प्रयास करते हैं तो हमें रनटाइम पर एक अंकगणितीय अपवाद मिलता है।
class JavaError {
public static void main(String[] args) {
int a = 23;
int b = 0;
System.out.println(a / b);
}
}
java -cp /tmp/UDRgGsLLQ6 JavaError
Exception in thread "main" java.lang.ArithmeticException: / by zeroat JavaError.main(JavaError.java:7)
सीमा अपवाद के बाहर सरणी सूचकांक
जब किसी सरणी में कोई गैर-मौजूद तत्व एक्सेस किया जाता है
जावा में एक सरणी को एक सेट आकार की आवश्यकता होती है। यदि आप सरणी की तुलना में अधिक तत्व जोड़ने का प्रयास करते हैं, तो इसका परिणाम ArrayIndexOutOfBoundsException होगा । निम्नलिखित कोड एक सरणी के आठ सूचकांक में एक तत्व जोड़ने का प्रयास करता है जो केवल पांच तत्वों को शामिल करने के लिए बनाया गया था:
गैर-मौजूद सरणी अनुक्रमणिका तक पहुँचना:
class JavaError {
public static void main(String[] args) {
String[] arr = new String[5];
arr[6] = "Hi"; // Accessing array index that does not exsist
System.out.println("Something went wrong!");
}
}
java -cp /tmp/UDRgGsLLQ6 JavaError
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 5
at JavaError.main(JavaError.java:6)
जावा एक सरणी में तत्वों के लिए शून्य आधारित गिनती लागू करता है, इसलिए किसी सरणी का सूचकांक 6 सातवें तत्व को संदर्भित करेगा। यहां तक कि निम्न कोड जावा में एक ArrayIndexOutOfBoundsException को ट्रिगर करेगा, क्योंकि इंडेक्स 4 किसी सरणी के पांचवें तत्व का संदर्भ है:
String[] arr = new String[5];
arr[5] = "Hi"; // Accessing array index that does not exsist
ऐरेस्टोर अपवाद
ArrayStoreException ClassCastException के साथ समानताएँ साझा करता है। यह जावा रनटाइम अपवाद तब होता है जब गलत प्रकार की वस्तु को सरणी में रखा जाता है।
नीचे दिए गए उदाहरण में, एक BigInteger सरणी बनाई गई है, जिसके बाद एक Double जोड़ने का प्रयास किया गया है। डबल, BigInteger के साथ संबंध साझा नहीं करता है, इसलिए यह रनटाइम पर ArrayStoreException को ट्रिगर करता है।
Number[] bigInt = new BigInteger[5];
bigInt[0] = Double.valueOf(12345);
BigInteger[] bigInt = new BigInteger[5];
bigInt[0] = Double.valueOf(12345); // Java compile error
असमर्थित ऑपरेशन अपवाद
जावा प्रोग्रामर अक्सर जावा सरणी को अधिक उपयोगकर्ता-अनुकूल सूची में रूपांतरित करने के लिए Arrays वर्ग का उपयोग करते हैं। हालाँकि, जावा द्वारा लौटाई जाने वाली सूची केवल पढ़ने के लिए होती है। डेवलपर्स जो इस तथ्य से अनजान हैं और नए तत्वों को जोड़ने का प्रयास करते हैं, वे UnsupportedOperationException में चलते हैं। यह उदाहरण दिखाता है कि यह कैसे होता है:
Integer[] data = {1,2,3,5,8,13,21};
List<Integer> list = Arrays.asList(data);
list.add(new Integer(0));
NoSuchElementException
आप एक खाली पुनरावर्तक के माध्यम से पुनरावृति नहीं कर सकते। निम्न कोड, जो एक खाली हैशसेट में अगला तत्व प्राप्त करने का प्रयास करता है, NoSuchElementException को फेंकता है।
Set set = new HashSet();
set.iterator().next(); // Java runtime exception thrown
if (!set.isEmpty()) {
set.iterator().next();
}
डेटा प्रकार रूपांतरण त्रुटियों के लिए
जावा एक दृढ़ता से टाइप की जाने वाली भाषा है। यह कड़ाई से प्रकार के पदानुक्रमों को लागू करता है, और एक वस्तु को दूसरे पर तब तक नहीं डालेगा जब तक कि वे एक बहुरूपी संबंध साझा नहीं करते। तो ClassCastException तब होता है जब आप किसी ऑब्जेक्ट को किसी विशेष वर्ग में गलत तरीके से डालने का प्रयास करते हैं। इसका अर्थ है कि आपकी वस्तु इस वर्ग का उदाहरण या उपवर्ग नहीं है।
निम्न कोड में, दिनांक ऑब्जेक्ट को टाइमस्टैम्प में डालने का प्रयास रनटाइम पर क्लासकास्ट अपवाद त्रुटि फेंकता है।
Date today = new Date();Timestamp time = (Timestamp)today;
long seconds = System.currentTimeMillis();
Timestamp time = new Timestamp(seconds);
Date today = (Date)time; // this cast works
दिनांक समय अपवाद
डेटा हेरफेर एक मुश्किल प्रयास है। समय क्षेत्र, दिनांक रेखाएं और असंगत दिनांक स्वरूप जावा को रनटाइम पर विभिन्न दिनांक समय अपवादों को फेंकने का कारण बन सकते हैं।
उदाहरण के लिए, निम्न कोड संकलित करता है, लेकिन LocalDate वर्ग 'hourOfDay' फ़ील्ड विफल होने की तिथि को प्रारूपित करने का प्रयास करेगा।
LocalDate now = LocalDate.now();
DateTimeFormatter.RFC_1123_DATE_TIME.format(now);
LocalDate now = LocalDate.now();
DateTimeFormatter.ISO_DATE.format(now);
गलत तरीके से कार्यान्वित समांतर संगणनाओं के लिए
Arrays वर्ग की asList विधि केवल एक संग्रह के लिए केवल पढ़ने के लिए उपचार की आवश्यकता नहीं है।
जब आप किसी सूची पर पुनरावृति करते हैं, तो अंतर्निहित संग्रह निश्चित होना चाहिए और अद्यतन नहीं होना चाहिए। इस प्रकार, कोड के निम्नलिखित स्निपेट के भीतर ऐड विधि एक समवर्ती संशोधन अपवाद को फेंकती है।
List servers = new ArrayList();
servers.add("Tomcat");
Iterator<String> iterator = servers.iterator();
while (iterator.hasNext()) {
String server = iterator.next();
servers.add("Jetty"); // throws a Runtime Exception
}
इनपुट मिसमैच अपवाद
InputMismatchException आमतौर पर जावा प्रोग्राम के साथ काम करते समय होता है जो उपयोगकर्ताओं को स्कैनर वर्ग का उपयोग करके इनपुट के लिए संकेत देता है । यह अपवाद आमतौर पर उपयोगकर्ता इनपुट के दौरान होता है जब आप एक निश्चित प्रकार के इनपुट की अपेक्षा करते हैं और उपयोगकर्ता एक अलग प्रकार के इनपुट में प्रवेश करता है। दूसरे शब्दों में यह अपवाद तब हो सकता है जब इनपुट अपेक्षित प्रकार के लिए अमान्य हो। इनपुट या तो अपेक्षित प्रकार के पैटर्न से मेल नहीं खाता, या सीमा से बाहर है।
जैसे अमान्य डेटा पास करना जैसे गैर-संख्यात्मक फ़ील्ड में एक संख्यात्मक मान पास करना। उदाहरण के लिए, यदि कोई प्रोग्राम किसी इनपुट के लिए पूर्णांक मान की अपेक्षा करता है, लेकिन उपयोगकर्ता इसके बजाय एक स्ट्रिंग मान दर्ज करता है, तो एक InputMismatchException को फेंक दिया जाता है।
समाधान : उस कोड को रैप करें जो उपयोगकर्ता इनपुट के लिए पूछता है थोड़ी देर के लूप में जो उपयोगकर्ता को सही इनपुट के लिए लगातार संकेत देगा।
अवैध प्रारूप रूपांतरण अपवाद
स्पष्टीकरण : यह printf() और String.format() से जुड़ा हुआ है । इसका अर्थ है कि एक असंबद्ध प्लेसहोल्डर है (बहुत अधिक प्लेसहोल्डर, पर्याप्त तर्क नहीं) या यह तर्कों में प्रकार के लिए गलत प्लेसहोल्डर है। उदाहरण के लिए, एक पूर्णांक के लिए प्लेसहोल्डर होने के कारण %s इस त्रुटि को फेंक देगा।
समाधान : सुनिश्चित करें कि प्लेसहोल्डर्स की संख्या तर्कों की संख्या से मेल खाती है और सुनिश्चित करें कि प्लेसहोल्डर्स सही प्रकार हैं।
नंबरफॉर्मेट अपवाद
किसी अमान्य स्ट्रिंग को संख्या में बदलने का प्रयास किया जा रहा है
NumberFormatException तब होती है जब एक स्ट्रिंग को अनुचित प्रारूप के साथ संख्यात्मक मान में बदलने का प्रयास किया जाता है । इसका मतलब है, जब किसी स्ट्रिंग को किसी संख्यात्मक प्रकार (फ्लोट, इंट, आदि) में बदलना संभव नहीं होता है, तो यह अपवाद फेंक दिया जाता है। यह जावा में एक रनटाइम अपवाद (अनियंत्रित अपवाद) है। यह IllegalArgumentException वर्ग का एक उपवर्ग है।
अमान्य पैरामीटर अपवाद
किसी विधि में अमान्य पैरामीटर/तर्क पास करना
यह अपवाद, IllegalArgumentException का एक उपवर्ग है जिसे JCA/JCE इंजन वर्गों द्वारा उपयोग के लिए डिज़ाइन किया गया है, जब एक विधि के लिए एक अमान्य पैरामीटर पास किया जाता है तो उसे फेंक दिया जाता है ।
शून्य सूचक का अपवाद
NullPointerException एक बहुत ही सामान्य RuntimeException है जिसका जावा एप्लिकेशन सामना करते हैं। यह अपवाद तब फेंका जाता है जब जावा एक अशक्त संदर्भ का सामना करता है जब वह किसी की अपेक्षा नहीं करता है। और एक जावा डेवलपर कोड लिखता है जो इस संदर्भ (अनियंत्रित वस्तु) पर एक विधि का आह्वान करता है।
String data = null;
System.out.println( data.length() ); // throws NullPointerException
अपने जावा प्रोग्राम में इस रनटाइम अपवाद से बचने के लिए आपके द्वारा उपयोग किए जाने से पहले आपके द्वारा बनाए गए प्रत्येक ऑब्जेक्ट को इनिशियलाइज़ करें, और किसी भी ऑब्जेक्ट पर एक अशक्त जाँच करें जो एक बाहरी लाइब्रेरी आपके प्रोग्राम में पास करती है।
इसे फॉलो करके हमारे प्रकाशन का समर्थन करें
अपनी टीम की क्षमता को अधिकतम करने वाली जावा रनटाइम त्रुटियों पर एक नज़र डालें : अपनी सॉफ़्टवेयर डिलीवरी टीम को व्यस्त कैसे रखें सबसे सामान्य रूप से पूछे जाने वाले Java8 स्ट्रीम आधारित साक्षात्कार प्रश्न - अंतिम भाग डेटाबेस एकीकरण के साथ एक सरल क्वार्कस प्रोजेक्ट कैसे बनाएं जावा में अपवाद श्रंखला क्या है | एक्सेप्शन हैंडलिंग मैं 2 दिनों में एक किताब लिखकर $300 कमाता हूं - यहां बताया गया है कि अपने जीवन की गुणवत्ता में सुधार के 10 सरल लेकिन प्रभावी तरीके स्प्रिंग बूट के साथ शुरुआत करना: शुरुआती लोगों के लिए एक व्यापक ट्यूटोरियल
![क्या एक लिंक्ड सूची है, वैसे भी? [भाग 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































