CodeGym /Java Blog /यादृच्छिक /जुनी पातळी 09
John Squirrels
पातळी 41
San Francisco

जुनी पातळी 09

यादृच्छिक या ग्रुपमध्ये प्रकाशित केले

ज्ञान विरुद्ध कौशल्ये

जुनी पातळी 09 - 1कॉलेजने आम्हाला शिकवले की सिद्धांत आणि सराव यात फारसा फरक नाही. बरं, तुम्हाला नक्कीच समजले आहे की ते समान नाही. पण तुम्हाला मूळ फरक दिसत नाही. तरीही एक आहे. बहुतेक लोक "मला माहित आहे" आणि "मी करू शकतो" मध्ये समानता चिन्ह लावतात. का? काही उदाहरणांबद्दल काय?
  1. मला माहित आहे की धूम्रपान करणे माझ्यासाठी वाईट आहे, परंतु मी धूम्रपान करतो.
  2. मला माहित आहे की फास्ट-फूड माझ्यासाठी वाईट आहे, पण मी ते खातो.
  3. मला रहदारीचे नियम माहित आहेत पण मला गाडी चालवता येत नाही.
  4. मला माहित आहे की जॉगिंग माझ्यासाठी चांगले आहे पण मी सकाळी जॉगिंग करत नाही.
असे बरेचदा घडते की लोक "मी करू शकतो" साठी "मला माहित आहे" घेतात. वाहतूक नियमांचे हे उत्तम उदाहरण आहे. जर एखाद्या व्यक्तीला नियम माहित असतील आणि ते कसे चालवायचे हे माहित असेल तर याचा अर्थ तो गाडी चालवू शकतो का? नाही. जर त्याला वाटले की त्याला कसे चालवायचे ते माहित आहे? तर त्याला प्रशिक्षकाची गरज का आहे – त्याला आधीच सर्व काही माहित आहे. जेव्हा तुम्हाला खात्री असेल की तुम्हाला सर्वकाही आधीच माहित आहे तेव्हा तुम्ही कदाचित नवीन काही शिकणार नाही. आणि जर तुम्हाला खात्री असेल की तुम्हाला सर्वकाही कसे करावे हे माहित असेल तर तुम्ही अभ्यास करणार नाही. असा विचारही तुमच्या मनात येणार नाही. आणि याचा अर्थ असा की आपण काहीतरी शिकण्याच्या सर्व अद्भुत संधी गमावाल. नेहमीचे कॉलेज तुम्हाला फक्त ज्ञान देते; तुम्हाला स्वतःहून कौशल्ये आत्मसात करावी लागतील. पण मी काय ऐकू? तुम्ही तुमच्या कॉलेजमध्ये थिअरीव्यतिरिक्त सराव केला आहे का? ठीक आहे, जर तुम्ही भौतिकशास्त्र विद्याशाखेवर अभ्यास केला असेल, कमीतकमी 20% कार्यक्षमतेसह वाफेच्या इंजिनचे कार्यरत मॉडेल बनवा. मी पैज लावतो की तुम्हाला हे कसे करायचे ते माहित आहे, परंतु तुम्ही ते प्रत्यक्षात करू शकणार नाही, मी बरोबर आहे का? तुम्ही केमिस्ट आहात ? धुरकट पावडर बनवा. तुम्हाला कसे माहित आहे, पण तुम्ही हे करू शकत नाही, हा? गणितज्ञ, तुम्ही आहात का? आर्टिलरी शेलच्या प्रक्षेपणाची गणना करा. शेलचा आकार विचारात घेण्यास विसरू नका. वास्तविक जीवनात गणिताचे ठिपके उडत नाहीत. आणि गोलाकार घोडे नाहीत. जुनी पातळी 09 - 2जीवशास्त्रज्ञ? पेनिसिलिन वेगळे करा. हा साचा खरबूजांवर वाढतो, म्हणजे तुम्हाला माहिती आहे. तुम्हाला कसे माहित आहे - अद्भुत! तु हे करु शकतोस का? अर्थशास्त्रज्ञ?तेलाच्या किंमती वाढण्याचा अंदाज लावा. झाले? आणि आता ते तुमच्या अंदाजानुसार $2,000 किंवा $200,000 मध्ये बदला. तुम्ही कधी फॉरेक्सवर खेळला आहे का? वास्तविक पैशासाठी? किंवा तुम्हाला फक्त ते काय आहे हे माहित आहे? आंतरराष्ट्रीय अर्थशास्त्र? भव्य! मी ऑफशोर कंपनी कुठे उघडू? हाँग-कॉंग, आयर्लंड किंवा यूएसए मध्ये. का? जरी तुम्हाला हे माहित असले तरी, जे संशयास्पद आहे, तुम्ही ते कदापि करू शकणार नाही, कारण तुम्ही ते प्रत्यक्षात कधीच केले नाही. ते कसे करायचे, याची थोडीशी कल्पनाही तुम्हाला नसते. अरे, तू कॉलेजमध्ये शिकलास ना? तुमची तयारी नसलेली कामे तुम्हाला देण्याचा मला काय अधिकार आहे? कारण ही वास्तविक जीवनाची कार्ये आहेत. हा सराव आहे , तुम्ही कॉलेजमध्ये फक्त अभ्यास केला आहे: गोलाकार घोडे, परिपूर्ण स्पर्धा – यापैकी काहीही वास्तविक जीवनात अस्तित्वात नाही. पण मी उल्लेख करायला का विसरलोविपणन विशेषज्ञ ? माझे $500 खर्च करण्याचा सर्वोत्तम मार्ग कोणता आहे जेणेकरुन शक्य तितक्या लोकांना माझ्या व्याख्यानांची माहिती मिळेल? जाहिरातीवर? तुम्हाला माहिती आहे का की केवळ क्लासिक जाहिरातीच कालबाह्य झाल्या आहेत असे नाही तर USP (युनिक सेलिंग प्रपोझिशन) ची संकल्पना देखील आहे, जी तुम्हाला कॉलेजमध्ये जवळजवळ अनोखे रामबाण उपाय म्हणून शिकवली गेली होती याची मला खात्री आहे. विसरा तुम्हाला काही माहीत आहे. स्वतःला विचारा - मी काय करू शकतो? उपयुक्त, म्हणजे? लोक पैसे देतील काहीतरी? चांगले पैसे, म्हणजे? तर मित्रांनो, चला CodeGym सारख्या अप्रतिम कोर्सबद्दल कृतज्ञता व्यक्त करूया. त्‍यामुळे तुम्‍हाला प्रोग्रॅम कसा करायचा हेच कळणार नाही, तर तुम्‍ही प्रत्यक्षात ते करू शकाल. काही वर्षांत तुम्ही नोकरी मिळवू शकाल आणि चांगले पैसे कमवू शकाल. मला आशा आहे की हे पैसे छान आणि आरामदायी जगण्यासाठी पुरेसे असतील. मी ते पुन्हा एकदा सांगेन, जेणेकरून तुम्हाला आठवत असेल: तुम्हाला काय माहित आहे हे महत्त्वाचे नाही. तुमच्याकडे कोणती उपयुक्त कौशल्ये आहेत हीच महत्त्वाची गोष्ट आहे, लोक तुम्हाला पैसे देण्यास उत्सुक असतील. हे जितक्या लवकर समजेल तितके चांगले.

तुम्ही एका नवीन स्तरावर पोहोचला आहात

स्तर 9

जुनी पातळी 09 - 3

1 रिशा, स्टॅक ट्रेस

जुनी पातळी 09 - 4- अहो! आज मी तुम्हाला स्टॅक ट्रेस काय आहे ते सांगेन. पण आधी मी तुम्हाला स्टॅक म्हणजे काय हे समजावून सांगतो. - कागदपत्रांच्या स्टॅकची कल्पना करा - विशिष्ट लिपिकासाठी असाइनमेंट. स्टॅकच्या शीर्षस्थानी एक नवीन असाइनमेंट ठेवली जाऊ शकते आणि तो स्टॅकच्या शीर्षस्थानी असाइनमेंट घेईल. अशा प्रकारे, असाइनमेंट प्रथम येणाऱ्यावर न करता पूर्ण केल्या जातील. प्रत्येक वेळी कारकून शेवटची असाइनमेंट घेतो. संग्रहाच्या अशा संरचनेला स्टॅक म्हणतात . - जावामध्ये, एक विशेष संग्रह आहे - स्टॅक. या संग्रहामध्ये "घटक जोडा" आणि "एक घटक घ्या(घेणे/घेणे)" पद्धती आहेत. तुम्हाला आधीच माहित आहे की, जोडलेला शेवटचा घटक प्रथम घेतला जाईल. - हं. हे कठीण नाही, मला वाटते. - ठीक आहे. मग मला स्टॅक ट्रेस काय ते समजावून सांगाआहे - कल्पना करा की जावा फंक्शनमध्ये А फंक्शन B ला कॉल करते आणि नंतरचे फंक्शन C कॉल करते , जे त्याच्या बदल्यात, फंक्शन डी कॉल करते . म्हणून, फंक्शन B मधून बाहेर पडण्यासाठी , तुम्हाला प्रथम फंक्शन C मधून बाहेर पडणे आवश्यक आहे आणि असे करण्यासाठी तुम्हाला D फंक्शनमधून बाहेर पडावे लागेल . हे स्टॅकसारखेच आहे. - आणि समानता काय आहे? - स्टॅकमध्ये, विशिष्ट असाइनमेंट मिळवण्यासाठी, तुम्हाला शीर्षस्थानी ठेवलेल्या सर्व असाइनमेंट देखील पूर्ण कराव्या लागतील. - ठीक आहे, हे एक साधर्म्य आहे, परंतु मला खात्री नाही की मला सर्वकाही बरोबर समजले आहे. - इकडे पहा. Java मध्ये स्टॅक हा घटकांचा संच असतो. हे स्टॅकमधील कागदाच्या शीट्ससारखे आहे. वरून तिसरा घेण्यासाठी, तुम्ही दुसरी शीट घ्यावी, परंतु त्यापूर्वी तुम्हाला पहिली घ्यावी लागेल. तुम्ही नेहमी पत्रके ठेवू आणि घेऊ शकता, परंतु तुम्ही ती फक्त वरच्या बाजूला ठेवू शकता आणि फक्त वरून घेऊ शकता. हेच फंक्शन कॉलवर लागू होते. फंक्शन ए कॉल फंक्शन बी , नंतरचे कॉल फंक्शन सी . А मधून बाहेर पडण्यासाठी , तुम्हाला प्रथम B मधून बाहेर पडावे लागेल आणि हे करण्यासाठी तुम्हाला C मधून बाहेर पडावे लागेल . - एक मिनिट थांब. जर मला ते बरोबर समजले तर, संपूर्ण स्टॅक "फक्त स्टॅकवर ठेवलेली शेवटची शीट घेतली जाऊ शकते" आणि "प्रथम, शेवटचे कॉल केलेले फंक्शन बाहेर पडायला हवे" मध्ये वळते. असं आहे का? - होय. तर, फंक्शन कॉलचा क्रम म्हणजे "फंक्शन कॉल स्टॅक" किंवा फक्त "कॉल स्टॅक". लास्ट नावाचे फंक्शन प्रथम समाप्त करणे आवश्यक आहे. चला उदाहरण पाहू: जुनी पातळी 09 - 5- ठीक आहे. फंक्शन कॉलसह सर्व काही स्पष्ट आहे, मला वाटते. पण हे StackTraceElement काय आहे ? - जावा व्हर्च्युअल मशीन सर्व फंक्शन कॉल लॉग करते. या उद्देशासाठी त्यात एक विशेष संग्रह आहे - स्टॅक. जेव्हा एक फंक्शन दुसर्‍याला कॉल करते, तेव्हा JVM या स्टॅकमध्ये नवीन घटक StackTraceElement ठेवते. फंक्शन संपल्यावर, घटक स्टॅकमधून हटविला जातो. अशा प्रकारे, हा स्टॅक नेहमी "फंक्शन कॉल स्टॅक" च्या सद्य स्थितीबद्दल अद्ययावत माहिती संग्रहित करतो. - प्रत्येक StackTraceElementम्हणतात पद्धतीबद्दल माहिती आहे. त्यामुळे तुम्ही getMethodName वापरून या पद्धतीचे नाव मिळवू शकता . - वरील उदाहरण हे दर्शविते:
  1. "कॉल स्टॅक" मिळवा:
  2. प्रत्येकासाठी लूप वापरून अॅरेची पुनरावृत्ती करा . मला आशा आहे की तुम्ही ते विसरला नसेल.
  3. System.out वर पद्धतीची नावे मुद्रित करा .
- एक मनोरंजक गोष्ट, आणि वरवर पाहता सोपे. धन्यवाद, रिशा!

2 डिएगो, स्टॅक ट्रेस डिस्प्लेवर कार्य

- अहो, अमिगो! स्क्रीनवर स्टॅक ट्रेस प्रदर्शित करण्यासाठी येथे एक लहान कार्य आहे.
कार्ये
प्रत्येक पद्धतीने त्याचा StackTrace परत केला पाहिजे,
एकमेकांना कॉल करणाऱ्या पाच पद्धती लिहा. प्रत्येक पद्धतीने त्याचा StackTrace परत केला पाहिजे.
2 StackTrace पुन्हा
एकमेकांना कॉल करणाऱ्या पाच पद्धती लिहा. प्रत्येक पद्धतीने त्याच्या कॉलर पद्धतीचे नाव परत केले पाहिजे. तुम्ही StackTrace वापरून कॉलर पद्धत मिळवू शकता.
3
या पद्धतीने एकमेकांना कॉल करणाऱ्या पाच पद्धती लिहा मधून कॉल केलेल्या कोडचा लाइन क्रमांक परत केला पाहिजे . प्रत्येक पध्दतीने ही पद्धत ज्या कोडवरून कॉल केली होती त्याचा लाइन क्रमांक परत केला पाहिजे. element.getLineNumber() फंक्शन वापरा .
4 10 कॉलचा स्टॅक ट्रेस
10 कॉलचा स्टॅक ट्रेस मिळवण्यासाठी कोड लिहा.
पद्धतीने परिणाम दिला पाहिजे - त्याची स्टॅक ट्रेस खोली
एक पद्धत लिहा जी त्याची स्टॅक ट्रेस खोली प्रदर्शित करते आणि परत करते. स्टॅक ट्रेस खोली ही त्याच्या पद्धतींची संख्या आहे (सूचीमधील घटकांची संख्या).

3 एली, त्रुटी आणि अपवाद

- अहो, अमिगो! आज आपल्याकडे एक अतिशय मनोरंजक धडा आहे. मी तुम्हाला अपवादांबद्दल सांगेन. अपवाद ही प्रोग्राममधील त्रुटी नियंत्रित करण्यासाठी एक विशेष यंत्रणा आहे. प्रोग्राममध्ये उद्भवू शकणार्‍या त्रुटींची काही उदाहरणे येथे आहेत:
  1. प्रोग्राम पूर्ण डिस्कवर फाइल लिहिण्याचा प्रयत्न करतो.
  2. प्रोग्राम व्हेरिएबलची पद्धत कॉल करण्याचा प्रयत्न करतो जो शून्य संदर्भ संग्रहित करतो.
  3. प्रोग्राम एका संख्येला 0 ने विभाजित करण्याचा प्रयत्न करतो.
या क्रियांमुळे त्रुटी येते. सहसा, यामुळे प्रोग्राम बंद होतो - कोड कार्यान्वित करणे सुरू ठेवण्याचा काही अर्थ नाही. - अस का? - कार कठड्यावरून घसरत असताना चाक फिरवण्याचा काही अर्थ आहे का? - कार्यक्रम संपला पाहिजे असे तुम्हाला म्हणायचे आहे का? - होय. पूर्वी असेच होते. कोणत्याही त्रुटीमुळे प्रोग्राम संपुष्टात आला. - हा अतिशय हुशार निर्णय आहे. - त्यावर काम करण्याचा प्रयत्न करणे चांगले नाही का? - होय. तुम्ही MS Word मध्ये एक मोठा मजकूर टाईप केला आहे, तो सेव्ह केला आहे, तो सेव्ह केलेला नाही, पण प्रोग्राम तुम्हाला सांगतो की सर्व काही ठीक आहे. आणि तुम्ही टाइप करत रहा. मूर्ख, नाही का? - होय. - मग प्रोग्रामर एक मनोरंजक चाल घेऊन आले:प्रत्येक फंक्शनने त्याच्या कामाची स्थिती परत केली. 0 चा अर्थ असा आहे की फंक्शनने जसे अपेक्षित होते तसे कार्य केले, इतर कोणतेही मूल्य – की एक त्रुटी होती : हे मूल्य एक त्रुटी कोड आहे. - पण या दृष्टिकोनाचा एक तोटा होता. प्रत्येक (!) फंक्शन कॉलनंतर तुम्हाला फंक्शनद्वारे परत केलेला कोड (नंबर) तपासावा लागेल. प्रथम, ते गैरसोयीचे होते: त्रुटी-हँडलिंग कोड क्वचितच अंमलात आणला गेला होता, परंतु तुम्हाला तो नेहमी लिहावा लागला. दुसरे म्हणजे, फंक्शन्स स्वतः अनेकदा भिन्न मूल्ये परत करतात - त्यांच्याशी काय करावे? - होय. हेच मी विचारणार होतो. - मग एक उज्ज्वल भविष्य आले - अपवाद आणि त्रुटी-हँडलिंग दिसू लागले. ते कसे कार्य करते ते येथे आहे:
  1. जेव्हा एरर येते, तेव्हा जावा व्हर्च्युअल मशीन एक विशेष ऑब्जेक्ट तयार करते - एक अपवाद - ज्यामध्ये त्रुटीबद्दल सर्व माहिती असते. भिन्न त्रुटींसाठी भिन्न अपवाद आहेत.
  2. मग हा अपवाद प्रोग्रामला चालू फंक्शनमध्ये ताबडतोब व्यत्यय आणण्यास भाग पाडतो आणि पुढील फंक्शन, जोपर्यंत ते मुख्य पद्धतीतून बाहेर पडत नाही. त्यानंतर कार्यक्रम संपतो. जावा डेव्हलपर या प्रक्रियेला "कॉल स्टॅक परत आणते" असे म्हणतात.
- पण तुम्ही म्हणालात की कार्यक्रमातून नक्की बाहेर पडणार नाही. - ते बरोबर आहे, कारण अपवाद पकडण्याचा एक मार्ग आहे. तुम्हाला जेव्हा आणि कुठेही गरज असेल तेव्हा तुम्ही हे अपवाद पकडण्यासाठी आणि काहीतरी महत्त्वाचे करण्यासाठी एक विशेष कोड लिहू शकता. - हे करण्यासाठी, एक विशेष बांधकाम ट्राय-कॅच आहे . ते कसे कार्य करते ते पहा: जुनी पातळी 09 - 6- का «पद्धत1 कॉलिंगनंतर. कधीही दर्शविले जाणार नाही» स्क्रीनवर प्रदर्शित केले जाणार नाही? - मला आनंद झाला की तुम्ही त्याबद्दल विचारले. 25 व्या ओळीत, शून्याने भागाकार आहे. यामुळे त्रुटी येते - एक अपवाद. Java व्हर्च्युअल मशीनने एरर माहिती असलेली ArithmeticException ऑब्जेक्ट तयार केला . ही वस्तू अपवाद आहे. - मेथड मेथड 1() मध्ये एक अपवाद आला .यामुळे ही पद्धत तातडीने बंद करण्यात आली. ट्राय-कॅच ब्लॉक नसल्यास मेथड मेन संपुष्टात आणली जाईल . - ट्राय ब्लॉकमध्ये अपवाद आढळल्यास, तो कॅच ब्लॉकमध्ये पकडला जाईल. ब्लॉक ट्रायमधील उर्वरित कोड अंमलात आणला जाणार नाही, ब्लॉक कॅचची अंमलबजावणी त्वरित सुरू होईल. - मला नीट समजत नाही. - दुसऱ्या शब्दांत, हा कोड याप्रमाणे कार्य करतो:
  1. ट्राय ब्लॉकमध्ये अपवाद आढळल्यास , या ब्लॉकमधील कोड यापुढे कार्यान्वित केला जात नाही, परंतु ब्लॉक कॅचची अंमलबजावणी सुरू होते.
  2. अपवाद नसल्यास , ट्राय ब्लॉक शेवटपर्यंत अंमलात आणला जातो आणि कॅच कधीही अंमलात आणला जात नाही .
- अहेम! - अशी कल्पना करा की प्रत्येक मेथड कॉलनंतर आपण मेथड स्वतःच संपुष्टात आली आहे की अपवादामुळे हे तपासतो. अपवाद असल्यास, JVM उपलब्ध असल्यास ब्लॉक कॅच कार्यान्वित करण्यास प्रारंभ करते आणि अपवाद पकडते. कॅच ब्लॉक नसल्यास, JVM सध्याची पद्धत बंद करते. मग तीच तपासणी चालू पद्धत नावाच्या पद्धतीमध्ये सुरू होते. - आता मला वाटते की मला ते मिळाले. - ते ठीक आहे. - आणि कॅच ब्लॉकमध्ये तो अपवाद काय आहे? - सर्व अपवाद वर्ग अपवाद पासून वारशाने मिळालेले वर्ग आहेत. कॅचमध्‍ये त्‍याचा वर्ग नमूद करून आपण त्‍यापैकी कोणत्‍यालाही पकडू शकतोब्लॉक करा, किंवा सर्व एकाच वेळी सामान्य पालक वर्ग अपवाद निर्दिष्ट करून. नंतर, व्हेरिएबल e (हे व्हेरिएबल अपवाद ऑब्जेक्टचा संदर्भ संग्रहित करते) वरून तुम्हाला त्रुटीबद्दल सर्व आवश्यक माहिती मिळू शकते. - छान! आणि माझ्या पद्धतीत वेगवेगळे अपवाद आढळल्यास, मी त्यांना वेगवेगळ्या प्रकारे हाताळू शकतो का? - तुम्हाला करावे लागेल. तुम्ही ते याप्रमाणे करू शकता: जुनी पातळी 09 - 7- ट्राय ब्लॉकमध्ये अनेक कॅच ब्लॉक्स असू शकतात, त्यातील प्रत्येक त्याच्या प्रकारातील अपवाद पकडेल. - उम्फ. बरं, मला ते समजलं. अर्थात, मी स्वतः असे काही लिहिणार नाही. तथापि, मला असा कोड आढळल्यास मी घाबरणार नाही.

4 Elly, RuntimeException, थ्रो

जुनी पातळी 09 - 8- मी आज दुसरा विषय मांडण्याचा निर्णय घेतला. Java मध्ये, सर्व अपवाद दोन प्रकारांमध्ये विभागलेले आहेत - नियंत्रित/तपासलेले आणि अनियंत्रित/अनचेक . तपासलेले अपवाद पकडले जाणे आवश्यक आहे , अनचेक केलेले पकडले जाऊ शकते परंतु ते आवश्यक नाही . - हेतुपुरस्सर कोडमध्ये अपवाद टाकणे शक्य आहे का? - तुमच्या कोडमध्ये, तुम्ही स्वतः अपवाद टाकू शकता. तुम्ही तुमचे स्वतःचे अपवाद देखील लिहू शकता. पण आपण नंतर या छिद्रात खोलवर जाऊ. आता Java व्हर्च्युअल मशीनने टाकलेल्या अपवादांसह कसे कार्य करायचे ते शिकू. - ठीक आहे. - अपवाद असल्यास ClassNotFoundException आणि FileNotFoundExceptionमेथडमध्ये फेकले जातात (दिसतात), प्रोग्रामरला ते पद्धतीच्या स्वाक्षरीमध्ये (पद्धतीचे शीर्षलेख) निर्दिष्ट करावे लागतात. असे अपवाद तपासले जातात. हे सहसा असे दिसते: जुनी पातळी 09 - 9- म्हणून, आम्ही फक्त थ्रो लिहितो आणि स्वल्पविरामाने विभक्त केलेले अपवाद सूचीबद्ध करतो. बरोबर? असं आहे का? - होय. पण आणखी एक मनोरंजक गोष्ट आहे. खालील उदाहरण संकलित करण्यासाठी, मेथड1() कॉल करणार्‍या पद्धतीला हे अपवाद पकडावे लागतील किंवा पुढे टाकावे लागतील. जर तुम्हाला चेक केलेला अपवाद पुढे टाकायचा असेल तर तुम्हाला तो पद्धतीच्या शीर्षलेखात निर्दिष्ट करणे आवश्यक आहे . - पुन्हा एकदा, जर मुख्य पद्धतीमध्ये, तुम्हाला अशा पद्धतीला कॉल करायचा आहे ज्याच्या शीर्षलेखात FileNotFoundException हा शब्द आहे , मग तुम्हाला या दोन गोष्टींपैकी एक करावे लागेल:
  1. FileNotFoundException अपवाद पकडण्यासाठी , …
    तुम्हाला कोड गुंडाळावा लागेल जिथे तुम्ही धोकादायक पद्धतीला कॉल करून पहा-कॅच ब्लॉकसह
  2. FileNotFoundException अपवाद पकडू नका , …
तुम्हाला तुमच्या मुख्य पद्धतीच्या थ्रो सूचीमध्ये हे अपवाद जोडावे लागतील . - तुम्ही मला एक उदाहरण द्याल का? - येथे पहा: - हे उदाहरण संकलित केले जाणार नाही, कारण मेथड मेथड मेथड 1() ला कॉल करते, जे पकडले जाणे आवश्यक आहे असे अपवाद टाकते. - उदाहरण संकलित करण्यासाठी, तुम्हाला मुख्य पद्धतीमध्ये अपवाद हाताळणी जोडणे आवश्यक आहे . तुम्ही हे दोन प्रकारे करू शकता: - आणि इथे आम्ही ट्राय-कॅच वापरून ते पकडतो : - हे स्पष्ट होत आहे, परंतु फारच कमी. - खालील उदाहरणाकडे लक्ष द्या: - तरीही एक अपवाद आहे - RuntimeException आणि त्यातून मिळालेले वर्ग.जुनी पातळी 09 - 10जुनी पातळी 09 - 11जुनी पातळी 09 - 12जुनी पातळी 09 - 13त्यांना पकडणे किंवा फेकणे आवश्यक नाही. हे अनचेक अपवाद आहेत. हे अपवाद अंदाज करणे कठीण मानले जाते, म्हणून त्यांच्या घटनेचा अंदाज लावणे जवळजवळ अशक्य आहे. तुम्ही त्यांच्यासोबत समान गोष्टी करू शकता, परंतु त्यांना थ्रो मध्ये निर्दिष्ट करण्याची आवश्यकता नाही .

5 रिशा, कॉल स्टॅक रोलिंग, अपवादांमध्ये ते कसे करावे

- अपवाद कसे कार्य करतात याबद्दल मी तुम्हाला थोडे अधिक सांगू इच्छितो. खालील उदाहरण स्पष्ट करते की: जुनी पातळी 09 - 14- मला ते समजले नाही. - ठीक आहे. मी काय चालले आहे ते समजावून सांगेन. - डावीकडील उदाहरणामध्ये, आम्ही अनेक पद्धतींना साखळी क्रमाने कॉल करतो. method2() मध्ये आम्ही विशेषत: अपवाद तयार करतो आणि टाकतो (एरर सुरू करण्यासाठी). - उजवीकडील उदाहरण काय होते ते दर्शविते. पद्धत 2() पहा . अपवादाच्या निर्मितीचे यात रूपांतर होते: आम्ही RuntimeException प्रकाराचा ऑब्जेक्ट तयार करतो, तो एका विशेष व्हेरिएबल अपवादामध्ये संग्रहित करतो आणि ताबडतोब या पद्धतीतून बाहेर पडतो – रिटर्न . - मेथड 1 मध्ये, मेथड 2 च्या कॉलनंतर एक चेक आहे,अपवाद असेल किंवा नसेल तर; अपवाद असल्यास, पद्धत 1 त्वरित समाप्त होते. प्रत्येक (!) Java पद्धतीला कॉल केल्यानंतर ही तपासणी अप्रत्यक्षपणे केली जाते. - व्वा! - नक्की. - मेथड मेन मधील उजवीकडील कॉलममध्ये मी लिहिले आहे की जेव्हा एखादा अपवाद ट्राय-कॅच ब्लॉकद्वारे पकडला जातो तेव्हा काय होते . अपवाद नसल्यास, कोड नियोजित केल्याप्रमाणे कार्यान्वित करणे सुरू ठेवते. कॅच मध्ये निर्दिष्ट केलेल्या प्रकाराचा अपवाद असल्यास , आम्ही ते हाताळतो. - आणि थ्रो आणि उदाहरणाचा अर्थ काय? - डावीकडील शेवटची ओळ पहा नवीन RuntimeException(s). अशा प्रकारे आम्ही अपवाद तयार करतो आणि फेकतो. हे फक्त एक उदाहरण आहे. आम्ही ते आतापर्यंत करणार नाही. - उजव्या ब्लॉकमध्ये « а instanceof B » कमांड वापरून आपण ऑब्जेक्ट a मध्ये B प्रकार आहे की नाही हे तपासतो . म्हणजेच, व्हेरिएबल अपवादामध्ये संचयित केलेल्या ऑब्जेक्टमध्ये RuntimeException हा प्रकार आहे की नाही . ती तार्किक अभिव्यक्ती आहे. - बरं, हे थोडंसं स्पष्ट होत आहे.

6 डिएगो, अपवाद पकडण्याचे कार्य

- इकडे पहा! अंकल डिएगो तुमच्यासाठी कॅचिंगवर काही टास्क आणले आहेत. आपण नशीब इच्छा. मला वाटते तुम्हाला त्याची गरज असेल. हेह. जुनी पातळी 09 - 15- अहो, अमिगो! येथे काही मनोरंजक अपवाद पकडण्याचे कार्य आहेत.
कार्ये पकडणे
1. क्रमांकांसह कार्य करताना
अपवाद कोड चालवताना उद्भवणारा अपवाद पकडा:
int a = 42 / 0;
स्क्रीनवर अपवाद प्रदर्शित करा, त्याचा प्रकार निर्दिष्ट करा
2 2. स्ट्रिंग्स वापरताना
अपवाद कोड चालवताना उद्भवणारा अपवाद पकडा:
स्ट्रिंग s = नल;
स्ट्रिंग m = s.toLowerCase();
स्क्रीनवर अपवाद प्रदर्शित करा, त्याचा प्रकार निर्दिष्ट करा.
3 3. अॅरेसह कार्य करताना अपवाद
कोड चालवताना उद्भवणारा अपवाद पकडा:
int[] m = new int[2];
m[8] = 5;
स्क्रीनवर अपवाद प्रदर्शित करा, त्याचा प्रकार निर्दिष्ट करा.
4 4. लिस्ट कलेक्शन चालवताना
अपवाद हा कोड चालवताना आढळणारा अपवाद पहा:
ArrayList<String> list = new ArrayList<String>();
स्ट्रिंग s = list.get(18);
स्क्रीनवर अपवाद प्रदर्शित करा, त्याचा प्रकार निर्दिष्ट करा.
5. नकाशा संकलनासह कार्य करताना
अपवाद कोड चालवताना आढळणारा अपवाद पहा:
HashMap<String, String> map = new HashMap<String, String>(null);
map.put(null, null);
map.remove(null);
स्क्रीनवर अपवाद प्रदर्शित करा, त्याचा प्रकार निर्दिष्ट करा.
- टीप: प्रथम प्रोग्राम लिहा, नंतर कोणता अपवाद येतो ते पहा आणि त्यानंतर कोड बदला आणि अपवाद पकडा.

7 रिशा, मल्टिपल कॅच कसे कार्य करते

जुनी पातळी 09 - 16- आता, आणखी काही मनोरंजक व्याख्याने. मला शिकवायला खूप आवडते. - मला तुम्हाला सांगायचे आहे की एकाधिक झेल कसे कार्य करते. खरं तर हे खूप सोपे आहे: ब्लॉक ट्राय मध्ये अपवाद आढळल्यास , प्रोग्रामची अंमलबजावणी पहिल्या कॅचमध्ये हस्तांतरित केली जाते . - जर ब्लॉक कॅचच्या कंसात निर्दिष्ट केलेला प्रकार अपवाद-ऑब्जेक्टच्या प्रकारासारखा असेल, तर कोडची अंमलबजावणी {} च्या आत सुरू होते. नाहीतर आम्ही पुढच्या झेलवर जाऊ . तेथे चेकची पुनरावृत्ती होते. - जर आणखी कॅच ब्लॉक्स नसतील , परंतु अपवाद पकडला गेला नाही, तर तो पुढे टाकला जातो आणि सध्याच्या पद्धतीमध्ये व्यत्यय येतो. - मी पाहतो. तो कॅच अंमलात आणला जाईल, ज्याचा प्रकार अपवादाच्या प्रकाराशी जुळतो. - हो बरोबर. वास्तविक, हे थोडे अधिक क्लिष्ट आहे: मुद्दा असा आहे की वर्ग एकमेकांकडून वारशाने मिळू शकतात. जर “गाय” हा वर्ग “प्राणी” या वर्गाकडून वारसाहक्काने मिळाला असेल, तर “गाय” या प्रकारातील वस्तू केवळ “गाय” या व्हेरिएबलमध्येच नाही तर “प्राणी” प्रकाराच्या व्हेरिएबलमध्ये देखील संग्रहित केली जाऊ शकते. . - तर काय? - सर्व अपवाद अपवाद किंवा RuntimeException (जे अपवाद वरून देखील वारशाने मिळालेले आहेत ) या वर्गांकडून वारशाने मिळालेले असल्याने , ते सर्व कॅच (अपवाद e) किंवा पकड (RuntimeException e) कमांड वापरून पकडले जाऊ शकतात . - तर काय? - याचा अर्थ असा की,प्रथम, तुम्ही catch(Exception e) कमांड वापरून कोणताही अपवाद पकडू शकता . दुसरे, कॅच ब्लॉक्सचा क्रम महत्त्वाचा आहे. उदाहरणे: - 0 ने भागाकारामुळे आलेला अंकगणित अपवाद दुसऱ्या कॅचमध्ये पकडला जातो. जुनी पातळी 09 - 17- खालील उदाहरणात, अंकगणित अपवाद हा पहिल्या कॅचमध्ये पकडला गेला आहे , कारण सर्व अपवादांचे वर्ग अपवाद पासून वारशाने मिळालेले आहेत. तर, अपवाद कोणताही अपवाद पकडतो . जुनी पातळी 09 - 18- खालील उदाहरणात, ArithmeticException हा अपवाद पकडला जात नाही, परंतु कॉलिंग पद्धतीकडे टाकला जातो. जुनी पातळी 09 - 19- बरं, आता ते स्पष्ट होत आहे. हे अपवाद इतके सोपे नाहीत. - हे फक्त असे दिसते. खरं तर, जावा मधील ही सर्वात सोपी गोष्ट आहे. - मला शंका आहे की याबद्दल आनंदी व्हावे की नाराज व्हावे ...

8 डिएगो, एकाधिक अपवाद कॅच कार्ये

- अहो, अमिगो! काल मी नशेत होतो आणि तुमची कामे जास्त क्लिष्ट केली होती, पण मला आशा आहे की तुमच्याकडून काही कठोर भावना नाहीत आणि तुम्ही ते सर्व सोडवाल? ते तुमच्याच भल्यासाठी आहे. येथे:
कार्ये
1. अपवाद
अशी पद्धत आहे जी अपवाद पासून वारशाने मिळालेले दोन अपवाद फेकते आणि इतर दोन RuntimeException मधून वारशाने प्राप्त होतात : NullPointerException , ArithmeticException , FileNotFoundException , आणि URISyntaxException .

तुम्हाला NullPointerException आणि FileNotFoundException पकडणे आवश्यक आहे, परंतु ArithmeticException आणि URISyntaxException पकडण्यासाठी नाही . ते कसे करायचे?
2 2. अपवाद पकडणे अपवादातून
अनुक्रमे वारसाहक्काने मिळालेले तीन अपवाद आहेत : वर्ग अपवाद1 विस्तारित अपवाद वर्ग अपवाद2 विस्तारित करतो अपवाद1 वर्ग अपवाद3 विस्तारित अपवाद2 एक पद्धत आहे, ज्याचे वर्णन खालीलप्रमाणे केले आहे: सार्वजनिक स्थिर शून्य पद्धत1() अपवाद1, अपवाद2, अपवाद3 थ्रो करतो एक कॅच लिहा. अपवाद1 , अपवाद2 आणि अपवाद3 या तिन्हींना पकडण्यासाठी ब्लॉक करा






3 3. निवडक अपवाद पकडणे 1. BEAN.methodThrowExceptions
या पद्धतीद्वारे कोणते अपवाद फेकले जातात ते शोधा . 2. पद्धत processExceptions() ने पद्धतीला BEAN.methodThrowExceptions कॉल करावा आणि अपवाद हाताळावे: 2.1. FileSystemException अपवाद आढळल्यास, BEAN.log आणि थ्रो फॉरवर्ड 2.2 या पद्धतीवर कॉल करून लॉग इन करा . CharConversionException किंवा इतर कोणताही IOException अपवाद आढळल्यास, फक्त BEAN.log 3 या पद्धतीवर कॉल करून लॉग इन करा. तुम्ही 2.1 मध्ये फॉरवर्ड करत असलेल्या अपवादाचा वर्ग/प्रकार जोडा. प्रक्रियेसाठी अपवाद()



पद्धत स्वाक्षरी.
4. मेथड main() मधील उर्वरित अपवाद हाताळा आणि लॉग करा. प्रयत्न करा..कॅच टीप वापरा

:
जर तुम्ही अपवाद MyException पकडला असेल , जो तुम्हाला पकडायचा नव्हता, तर तुम्ही तो खालील कोड वापरून पुढे टाकू शकता:
catch (MyException e) {
throw e;
}
4 4. तपासलेले अपवाद पकडणे
पद्धती प्रक्रियेतील सर्व तपासलेले अपवाद हाताळाExceptions () .
प्रत्येक चेक केलेला अपवाद तुम्हाला स्क्रीनवर प्रदर्शित करणे आवश्यक आहे.
तुम्ही फक्त एक ब्लॉक ट्राय वापरू शकता .
5. अनचेक केलेले अपवाद पकडणे
पद्धती प्रक्रियेतील सर्व अनचेक अपवाद हाताळा Exceptions() . तुम्हाला प्रिंटस्टॅक()
पद्धत वापरून आलेल्या प्रत्येक अपवादाचा स्टॅक ट्रेस स्क्रीनवर प्रदर्शित करणे आवश्यक आहे . तुम्ही फक्त एक ब्लॉक ट्राय वापरू शकता .

9 प्राध्यापक, अपवादांवरील व्याख्यान

- आज आमच्याकडे एक अतिशय मनोरंजक विषय आहे - अपवाद. त्या वेळी, जेव्हा तरुण शास्त्रज्ञ आणि प्रोग्रामर या विषयाबद्दल खूप उत्सुक होते… - माफ करा, मला प्रयोगशाळेत जावे लागेल. येथे लेक्चर नोट्स आहेत. मला वाटते की तुम्ही ते स्वतःच शोधून काढाल. येथे: Java अपवाद (Oracle डॉक्युमेंटेशन) Java अपवाद हाताळणी (Java T point) Java - अपवाद हाताळणी (ट्यूटोरियल पॉइंट) मूलभूत Java अपवाद हाताळणी

10 ज्युलिओ

- अमिगो, आजच्या धड्याबद्दल तुम्हाला काय वाटते? तुमचा पॉझिट्रॉन मेंदू अजून काम करत नाही का? डिएगोची कार्ये कोणालाही थकवण्यासाठी पुरेशी आहेत. चला बिअरचा क्षण घेऊ आणि आराम करूया. तू अजून उभा आहेस का?

11 कॅप्टन गिलहरी

- हॅलो, सैनिक! - शुभ प्रभात गुरूजी! - माझ्याकडे तुमच्यासाठी काही चांगली बातमी आहे. तुमची कौशल्ये बळकट करण्यासाठी येथे एक द्रुत तपासणी आहे. हे दररोज करा आणि तुम्ही तुमची कौशल्ये त्वरीत वाढवाल. Intellij IDEA मध्ये कार्ये विशेषत: करण्यासाठी डिझाइन केलेली आहेत.
Intellij Idea मध्ये करायची अतिरिक्त कामे
1. शून्याने भागाकार पब्लिक स्टॅटिक व्हॉइड डिव्हिजनबायझीरो()
एक पद्धत तयार करा , जिथे तुम्हाला कोणत्याही संख्येला शून्याने विभाजित करणे आवश्यक आहे आणि भागाचा परिणाम स्क्रीनवर प्रदर्शित करा. divisionByZero() मेथड कॉल ट्राय ..catch मध्ये गुंडाळा . exception.printStackTrace() पद्धत वापरून अपवाद स्टॅक ट्रेस स्क्रीनवर प्रदर्शित करा .
2 2. 10 ते 0 पर्यंत काउंटडाउन
10 ते 0 पर्यंत काउंटडाउन करण्यासाठी लूप लिहा. विलंब करण्यासाठी Thread.sleep(100) वापरा; झोपेचा कॉल एका प्रयत्नात
गुंडाळा.. पकड .
3 3. एक पद्धत वापरून पहा..कीबोर्डवरून
संख्या वाचा. कीबोर्डवरून अंक वाचण्यासाठी एक स्वतंत्र पद्धत readData() मध्ये एक कोड लिहा . या पद्धतीचा संपूर्ण भाग ( रीडडाटा()
पद्धतीमधील संपूर्ण कोड , जेथे संख्या संग्रहित केल्या जातील त्या यादीची घोषणा वगळता) प्रयत्न करा..catch मध्ये गुंडाळा . जर वापरकर्त्याने नंबर टाकण्याऐवजी काही मजकूर एंटर केला तर, पद्धतीने अपवाद पकडला पाहिजे आणि आधी प्रविष्ट केलेले सर्व नंबर स्क्रीनवर प्रदर्शित केले पाहिजेत. स्क्रीनवर क्रमांक प्रदर्शित करा. प्रत्येक क्रमांक नवीन ओळीवर असावा. अंकांचा क्रम इनपुटमध्ये होता तसाच असावा.


4 4. तारीख कनव्हर्टर
कीबोर्डवरून तारीख वाचा «08/18/2013» स्वरूपात
ती तारीख स्क्रीनवर प्रदर्शित करा «AUG 18, 2013».
ऑब्जेक्ट्स दिनांक आणि SimpleDateFormat वापरा .
5. स्वर आणि व्यंजने
कीबोर्डवरून ओळ वाचणारा प्रोग्राम लिहा.
प्रोग्रामने स्क्रीनवर दोन स्ट्रिंग दाखवल्या पाहिजेत:
1) पहिल्या स्ट्रिंगमध्ये स्वर असावेत
2) दुसऱ्या स्ट्रिंगमध्ये एंटर केलेल्या मजकुरातील व्यंजन आणि विरामचिन्हे वर्ण असावेत.
स्पेसद्वारे वर्ण विभक्त करा.

उदाहरण इनपुट:
थांबा पहा
ऐका उदाहरण आउटपुट:
oooie
stplklstn
6 6. लिटल रेड राइडिंग हूडची कथा
1. पाच वर्ग आहेत: रेड राइडिंग हूड, आजी, पॅटी, वुडकटर, लांडगा. 2. प्रत्येक वर्गात ArrayList
प्रकाराची दोन फील्ड आहेत : मारले आणि खाल्ले. 3. आवश्यक वस्तू आधीच तयार केल्या आहेत (हूड, आजी, ...). 4. "लिटल रेड राइडिंग हूड" चे तर्क मिळविण्यासाठी योग्य संबंध (कोणी खाल्ले आणि कोणाला मारले) तयार करा.

7. मूव्ह स्टॅटिक मॉडिफायर्स
मूव्ह स्टॅटिक मॉडिफायर्स जेणेकरून कोड संकलित होईल.
8 8. संख्यांच्या अॅरेची सूची
एक सूची तयार करा ज्याचे घटक संख्यांचे अॅरे आहेत. अनुक्रमे 5, 2, 4, 7, 0, लांबीसह पाच ऑब्जेक्ट अॅरे सूचीमध्ये जोडा. कोणत्याही डेटासह अॅरे भरा आणि त्यांना स्क्रीनवर प्रदर्शित करा.
9. दहा मांजरी फील्ड स्ट्रिंग नावासह वर्ग मांजर
तयार करा . शब्दकोश नकाशा<स्ट्रिंग, मांजर> तयार करा , मॉडेलवर 10 मांजरी जोडा «नाव» - «मांजर». नकाशावरून नावांचा संच मिळवा आणि सेट स्क्रीनवर प्रदर्शित करा.

- ती कामे हिरव्या भाज्यांसाठी होती. मी उच्च जटिलतेची बोनस कार्ये जोडली. फक्त टॉप गनसाठी.
बोनस कार्ये
1. प्रोग्राम संकलित आणि चालत नाही. त्याचे निराकरण करा.
कार्य: प्रोग्रामने कीबोर्डवरून दोन फाईलची नावे वाचली पाहिजे आणि पहिल्या फाईलची दुसर्‍या नावाने निर्दिष्ट केलेल्या स्थानावर कॉपी केली पाहिजे.
2 2. प्रोग्राममध्ये नवीन कार्यक्षमता जोडा.
जुने कार्य: प्रोग्रामने कीबोर्डवरून दोन फाईलची नावे वाचली पाहिजेत आणि प्रथम फाईल दुसर्‍या नावाने निर्दिष्ट केलेल्या स्थानावर कॉपी करावी.
नवीन कार्य: प्रोग्रामने कीबोर्डवरून दोन फाईलची नावे वाचली पाहिजेत आणि पहिल्या फाईलची दुसऱ्या नावाने निर्दिष्ट केलेल्या स्थानावर कॉपी करावी.

निर्दिष्ट नावासह फाइल (ती कॉपी केली जाणार आहे) अस्तित्वात नसल्यास, प्रोग्रामने स्क्रीनवर "फाइल अस्तित्वात नाही" संदेश प्रदर्शित केला पाहिजे आणि वाचण्यापूर्वी कन्सोलमधून फाइलचे नाव पुन्हा एकदा वाचण्याचा प्रयत्न करा. दुसऱ्या (गंतव्य) फाइलचे नाव.
3 3. अल्गोरिदम शिकणे आणि सराव करणे.
कीबोर्डवरून शब्द आणि संख्यांची यादी वाचा. स्क्रीनवर शब्द चढत्या क्रमाने आणि संख्या उतरत्या क्रमाने दाखवा.

उदाहरण इनपुट:
चेरी
1
बीन
3
ऍपल
2
0
टरबूज

उदाहरण आउटपुट:
ऍपल
3
बीन
2
चेरी
1
0
टरबूज
टिप्पण्या
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION