2013-06-17 6 views
6

मैं मूल जावा डेवलपर हूं, मेरे लिए जावा में अपवाद स्पष्ट रूप से/कॉलर को पकड़ने या इसे बाद में संभालने का निर्णय लेने के लिए पर्याप्त है। फिर यह पाइथन आता है, कोई चेक अपवाद नहीं है, इसलिए अवधारणात्मक रूप से, कुछ भी आपको कुछ भी संभालने के लिए मजबूर नहीं करता है (मेरे अनुभव में, आप यह भी नहीं जानते कि दस्तावेज की जांच किए बिना संभावित अपवाद क्या हैं)। मैं पाइथन लोगों से काफी कुछ सुन रहा हूं कि, पायथन में, कभी-कभी आप बेहतर अपवादों को संभालने की कोशिश करने के बजाए रनटाइम पर असफल होने देते हैं।अपवाद हैंडलिंग दिशानिर्देश- पायथन बनाम जावा

किसी के बारे में मुझे कुछ संकेत दे सकते हैं:

  1. अजगर एक्सेप्शन हैंडलिंग के लिए दिशानिर्देश/एक अच्छी आदत है क्या?

  2. इस संबंध में जावा और पायथन के बीच क्या अंतर है?

+2

इतना ही नहीं कुछ भी नहीं बलों आप कुछ भी संभाल करने के लिए, लेकिन क्या अपवाद फेंक दिया जाता है जब एक शाही PITA है पर प्रलेखन खोजने:/ – fge

+0

@fge हाँ, वास्तव में, यह काफी कष्टप्रद है। – Shengjie

उत्तर

1

ठीक है, मैं कोशिश कर सकता हूं और एक उत्तर दे सकता हूं जो मैं तटस्थ के रूप में रख सकता हूं ... (नोट: मैंने कुछ महीनों के लिए पाइथन पेशेवर रूप से किया है, लेकिन मैं इसकी भाषा को महारत हासिल करने से बहुत दूर हूं संपूर्णता)

  1. दिशानिर्देश "मुक्त" हैं; यदि आप जावा पृष्ठभूमि से आते हैं, तो आप नियमित रूप से पाइथन कोड में जो पाया जाता है उससे अधिक दस्तावेज की तलाश में अधिक पाइथन देवताओं की तुलना में अधिक समय व्यतीत करेंगे, और try/except/finally अधिक है। दूसरे शब्दों में: जो आपको उपयुक्त बनाता है।

  2. अलावा तथ्य यह है कि वे किसी भी क्षण में कहीं भी फेंक दिया जा सकता है, से, अजगर बहु ​​अपवाद पकड़ (7 के बाद से जावा में ही उपलब्ध), with (कुछ जावा 7 के कोशिश के साथ-संसाधनों के बराबर) है, तो आपको एक से अधिक except ब्लॉक (जैसे जावा catch एक से अधिक बार हो सकता है), आदि। इसके अलावा, कोई वास्तविक सम्मेलन नहीं है जो मुझे पता है कि अपवादों का नाम कैसे रखा जाना चाहिए, इसलिए यदि आप SomeError देखते हैं तो मूर्ख मत बनें, यह हो सकता है अच्छी तरह से एक जावा देव "चेक अपवाद" के रूप में माना जाता है और Error नहीं है।

-3
  1. सर्वश्रेष्ठ अभ्यास उचित जगह में उचित अपवाद को संभालने के लिए है। डेवलपर के रूप में केवल आप ही तय कर सकते हैं कि आपके कोड के किस हिस्से को अपवादों को पकड़ना चाहिए। सभ्य इकाई परीक्षण के साथ यह स्पष्ट होना चाहिए। यदि आपके पास अपरिवर्तित अपवाद हैं, तो वे दिखाई देंगे।

  2. आपने पहले ही अंतरों का वर्णन किया है। अधिक मौलिक स्तर पर, जावा के डिजाइनरों का मानना ​​है कि वे आपके से बेहतर जानते हैं कि आपको कोड कैसे करना चाहिए, और वे आपको बहुत कुछ लिखने के लिए मजबूर करेंगे। इसके विपरीत, पाइथन मानते हैं कि आप वयस्क हैं, और आप जानते हैं कि आप क्या करना चाहते हैं। इसका मतलब यह है कि यदि आप ऐसा करने पर जोर देते हैं तो आप पैर में खुद को गोली मार सकते हैं।

+4

दूसरा बिंदु व्यक्तिगत राय है और इसका कोई मतलब नहीं है। – fge

+0

अंतर "जावा के डिजाइनर सोचने के बारे में नहीं है कि वे बेहतर जानते हैं"। चेक अपवाद केवल एक भाषा सुविधा है जो आपको रनटाइम की बजाय * संकलन समय * पर कोडर के रूप में सूचित कर सकता है, कि कोई समस्या हो सकती है। यह ठीक है अगर आपको वह सुविधा पसंद नहीं है, लेकिन ईमानदारी से, रवैया खो दें। –

+0

मैं जावा और पायथन के बीच तटस्थ/मध्य क्षेत्र से उत्तर की सराहना करता हूं। – Shengjie

0

मैं पाइथन देव नहीं हूं, लेकिन मैंने सी # में काफी काम किया है, जिसमें अपवाद भी नहीं हैं। जावा कोडर होने के कारण कुछ लोगों ने इसका उपयोग किया। मैं व्यक्तिगत रूप से अभी भी सोचता हूं कि चेक अपवाद एक अच्छी सुविधा है, लेकिन राय जंगली रूप से भिन्न होती है (जैसा कि आप यहां कुछ प्रतिक्रियाओं में देख सकते हैं)।

चेक अपवाद (नहीं) एक अच्छा विचार क्यों है (इस तरह की राय के लिए this blog देखें) पर कुछ लेख ऑनलाइन हैं।

लेकिन आपकी वरीयता के बावजूद: पायथन और सी # में अंगूठे का नियम अनिवार्य रूप से करना है जो आप पहले से कर रहे हैं - परीक्षण चलता है और दस्तावेज़ों को पढ़ता है।

मैं आमतौर पर सी # में क्या करता हूं, मेरे प्रोग्राम की जड़ पर 'कैच-ऑल' अपवाद हैंडलर होता है जो सुनिश्चित करता है कि कोई त्रुटि रिपोर्ट की गई है और प्रोग्राम साफ से बाहर निकलता है, और फिर मेरे कोड में गहराई से अधिक विशिष्ट होता है "विशिष्ट विशिष्ट त्रुटियों" के लिए अपवाद हैंडलर। तो वास्तव में, जावा में आप कैसे काम करेंगे, उससे अलग नहीं, अपने विशिष्ट हैंडलर कहां रखना है, यह जानने के लिए थोड़ा और काम है।

+0

मुझे नहीं पता था सी # में कोई अपवाद नहीं था! मैं हर रोज कुछ नया सीखता हूं ... – fge

+0

@fge, वास्तव में, जहां तक ​​मुझे पता है, वे जावा-विशिष्ट सुविधा बहुत अधिक हैं। –

+0

क्या मैं पूछ सकता हूं कि किसी को इसे वोट करने की आवश्यकता क्यों महसूस हुई? –

संबंधित मुद्दे