जावा में जांचे गए अपवाद ऐसी कोई बुरी बात नहीं है। बेशक ADTs Scala के लिए बेहतर विकल्प हो सकता है, लेकिन जावा में, जाँच किए गए अपवादों में अपनी जगह है और साफ-सुथरा कोड तर्क सिर्फ गैर-समझदारी है, चाहे कितने भी ब्लॉग इसे दोहराए। यह मूल रूप से कहता है कि आपको अपने सिस्टम में होने वाली गंभीर और संभावित रूप से खराब होने वाली स्थितियों को खुशी से अनदेखा करना चाहिए, क्योंकि स्क्रू टाइप सिस्टम, सुंदर कोड आपके सिस्टम को स्वचालित रूप से मजबूत बनाता है। इस तरह के तर्क यह भी बताते हैं कि इतने सारे जावा कोडर्स स्वेच्छा से अपने कोड को एक्सएमएल (स्प्रिंग, मेवेन, इत्यादि में स्थानांतरित कर देते हैं, हालांकि मैं यहां सुंदर भाग को याद करता हूं )।
स्काला में जांचे हुए अपवादों नीचे एम Odersky द्वारा दिए गए की कमी के लिए कारण http://www.scala-lang.org/old/node/8787.html आश्चर्य अलग है और समझ में आता है।
सूचियों पर जाँच किए गए अपवादों के साथ समस्या का प्रदर्शन मानचित्र विधि द्वारा किया जाता है:
def map[B](f: A => B): List[B]
@Throws के साथ नक्शा कैसे एनोटेट करें? यदि मानचित्र को @throws एनोटेशन स्वयं नहीं मिलता है, तो संभवतः आप इसे किसी भी फ़ंक्शन को पास नहीं कर सकते हैं जिसमें @throws है। यह उन मानचित्रों के लिए बोझिल प्रतिबंधों और भेदों को पेश करेगा जिनसे मानचित्र का उपयोग किया जा सकता है। चीजें बेहतर होंगी अगर हम किसी तरह बता सकते हैं कि नक्शा सभी अपवादों को फेंकता है जो इसके फ़ंक्शन तर्क को फेंकता है। कुछ प्रभाव प्रणालियाँ हैं जो इसे व्यक्त कर सकती हैं, लेकिन अभी तक मैंने जो देखा है वह बहुत भारी है।
लुकास रिट्ज़ हल्के प्रभाव प्रणालियों पर कुछ शोध कर रहे हैं जिनका उपयोग संक्षिप्त और सटीक तरीके से मानचित्र के प्रकार और अन्य सामान्य कार्यों को व्यक्त करने के लिए किया जा सकता है। यह शोध है, इसलिए यह स्पष्ट नहीं है कि हम किस हद तक सफल होंगे और इसमें से कितना स्केल में डाला जा सकता है। आदर्श रूप में, हम इसे वैकल्पिक बिंदु प्रणाली के रूप में किसी बिंदु पर जोड़ पाएंगे। लेकिन ठोस भविष्यवाणियां करना बहुत जल्दबाजी होगी।
चियर्स
यकीन नहीं है, लेकिन मुझे लगता है कि जावा 8 लैंबडा भी अनियंत्रित अपवादों तक ही सीमित हैं।अधिकांश (सभी?) JDK 8 ( java.util.function.*
) में नए कार्यात्मक इंटरफेस न तो अनियंत्रित अपवाद घोषित करते हैं और न ही।