त्रुटींची भीती बाळगा, परंतु त्यांना Java मध्ये लिहू नका! तुम्हाला कदाचित Java मधील अपवादांबद्दल काही गोष्टी आधीच माहित असतील . आज किमान वरवरच्या ज्ञानाचा तुम्हाला फायदा होईल. आम्ही एरर क्लासचे विश्लेषण करणार आहोत आणि एक विशेष अपवाद प्रकार जो अनेक लोकांना त्यांच्या स्टॅक ट्रेसमध्ये दिसल्यावर घाबरवतो.

जावाच्या अपवाद पदानुक्रमाच्या शीर्षस्थानी थ्रोएबल वर्ग आहे, ज्याचे दोन वंशज आहेत:

  • अपवाद , जो तुमच्या प्रोग्राममधील त्रुटींसाठी जबाबदार आहे.
  • आणि आजचा आमचा नायक - त्रुटी , जी JVM मधील त्रुटींसाठी जबाबदार आहे.
    हे लक्षात घेण्यासारखे आहे की हे बहुधा कोडिंग बग नसतात, परंतु अशा समस्या असतात ज्या सहसा विकसकावर अवलंबून नसतात.

एररचे काय करायचे

"त्रुटी" पकडताना, आपण लॉगिंग व्यतिरिक्त, कॅच ब्लॉकमध्ये कोणतीही क्रिया करू शकत नाही , कारण आम्ही JVM मध्येच समस्यांबद्दल बोलत आहोत.

लॉगिंग चांगले आहे: जेव्हा तुम्हाला रनटाइम एरर येते, तेव्हा तुम्ही लॉग पाहू शकता, त्याचे कारण पाहू शकता आणि काय निराकरण करायचे ते जाणून घेऊ शकता.

तुम्ही तुमचा कोड लिहिताना तुम्हाला कोणत्या प्रकारची त्रुटी येऊ शकते हे माहीत नसल्यामुळे, कॅच ब्लॉकमध्ये विशिष्ट प्रकार लिहिण्यात काही अर्थ नाही . एरर क्लास वापरणे देखील सर्वोत्तम उपाय नाही, कारण या प्रकरणात, आपण फक्त त्रुटी पकडू शकता.

त्यानुसार, थ्रोएबल क्लास वापरणे चांगले आहे , जे एरर आणि अपवाद दोन्ही पकडू शकतात . हे व्यवहारात कसे दिसते?

असे कोड लिहिणे ठीक नाही:

try {
    // Your code
} catch (OutOfMemoryError outOfMemoryError) {
    // Code to catch OutOfMemoryError
}
असा कोड लिहिणे देखील ठीक नाही:

try {
    // Your code
} catch (Error error) {
    // Code to catch all Errors
}
परंतु यासारखा कोड ठीक आहे:

try {
    // Your code
} catch (Throwable throwable) {
    // Code to catch all Throwables
}

त्रुटी हाताळण्याचा दुसरा पर्याय म्हणजे पद्धतीवर थ्रो क्लॉज घोषित केल्यानंतर त्या उच्च फेकणे . हे तंत्र वापरले जाते जेव्हा तुमचा कोड सैद्धांतिकदृष्ट्या एरर टाकू शकतो आणि तुम्ही तुमचा कोड वापरू शकतील अशा प्रत्येकाला सावध करू इच्छिता जेणेकरून ते त्रुटी योग्यरित्या हाताळू शकतील.

सामान्य चुका

काही सर्वात लोकप्रिय त्रुटी म्हणजे OutOfMemoryError आणि StackOverflowError वर्ग.

जेव्हा प्रोग्राममध्ये ऑब्जेक्ट्स तयार करण्यासाठी पुरेशी मेमरी नसते आणि कचरा संकलक ठेवू शकत नाही तेव्हा OutOfMemoryError अनेकदा दिसून येते. परिणाम म्हणजे OutOfMemoryError .

जावा तुम्हाला मेमरी लीक टाळण्यासाठी ऑब्जेक्ट्स मॅन्युअली हटवू देत नाही, परंतु कचरा वेचणाऱ्यावर जास्त काम करू नये आणि ढीग साचू नये म्हणून तुम्ही कचरा टाकणे टाळू शकता.

उदाहरणार्थ, यासारखा कोड मेमरीमध्ये भरपूर कचरा तयार करेल:


while (true) {
    new Object();
}

दुसरी त्रुटी ज्याबद्दल मला तुम्हाला सांगायचे आहे ती आहे StackOverflowError , जी स्टॅक ओव्हरफ्लो झाल्यावर फेकली जाते. स्टॅकमध्ये प्रामुख्याने स्थानिक व्हेरिएबल्स, पॅरामीटर्स आणि मेथड कॉल्स साठवले जात असल्याने, रिकर्शन (किंवा रिकर्सिव मेथड कॉल) हे या त्रुटीचे एक सामान्य कारण आहे:


public void foo() {
    foo();
}

प्रोग्रामच्या अंमलबजावणीदरम्यान समस्या टाळण्यासाठी, आधुनिक IDE वारंवार कॉलिंग पद्धतींबद्दल चेतावणी देतात.

तुम्ही एरर फेकणारा प्रोग्राम दुरुस्त करू शकत नाही , परंतु तुम्ही कोड लिहू शकता जो एरर टाकणार नाही आणि तुमचा प्रोग्राम खंडित करणार नाही. तुम्ही मेमरीसह काय करता ते पहा, काळजीपूर्वक वस्तू तयार करा आणि योग्य पद्धतीने कॉल करा. तुम्ही तसे केल्यास, तुम्हाला तुमच्या कोडमध्ये कमी समस्या येतील.

त्रुटी आणि अपवाद प्रकारांमधील फरक

त्रुटी अपवाद
कॅच ब्लॉकमध्ये दुरुस्त करणे शक्य नाही कॅच ब्लॉकमध्ये हाताळले जाऊ शकते
संकलित वेळी होत नाही संकलित वेळी पकडले जाऊ शकते
JVM मध्ये समस्या कोड लॉजिकमध्ये समस्या
सर्व त्रुटी अनचेक आहेत चेक केलेले आणि अनचेक केलेले

तुम्ही Java मध्ये अपवाद सोडू शकत नाही, परंतु तुम्ही त्यांना घाबरू नये. तुम्हाला फक्त प्रत्येक प्रकार काय दर्शवतो हे समजून घेणे आणि ते कसे हाताळायचे हे जाणून घेणे आवश्यक आहे. आजसाठी एवढेच! पुन्हा भेटू!