अपवाद हैंडलिंग सुविधा आजकल लगभग किसी भी वस्तु उन्मुख भाषा में मौजूद है। C++ और Java में भी हम इस तरह की सुविधा प्राप्त कर सकते हैं। सी ++ में अपवाद हैंडलिंग और जावा में अपवाद हैंडलिंग के बीच कुछ समानताएं हैं, जैसे दोनों भाषाओं में हमें ट्राइ-कैच ब्लॉक का उपयोग करना पड़ता है। हालांकि कुछ मुश्किलें भी हैं। ये नीचे की तरह हैं -
C++ में, हम किसी भी प्रकार के डेटा को अपवाद के रूप में फेंक सकते हैं। किसी भी प्रकार के डेटा का अर्थ है आदिम डेटाटाइप और पॉइंटर्स भी। जावा में हम केवल फेंकने योग्य वस्तुओं को फेंक सकते हैं। किसी भी फेंकने योग्य वर्ग के उपवर्ग भी फेंकने योग्य होंगे।
उदाहरण
#include <iostream> using namespace std; int main() { int x = -5; try { //protected code if( x < 0 ) { throw x; } } catch (int x ) { cout << "Exception Caught: thrown value is " << x << endl; } }
आउटपुट
Exception Caught: thrown value is -5
सी ++ में, किसी भी प्रकार के अपवादों को पकड़ने के लिए कैच ऑल नामक एक विकल्प होता है। सिंटैक्स नीचे जैसा है -
try { //protected code } catch(…) { //catch any type of exceptions }
उदाहरण
#include <iostream> using namespace std; int main() { int x = -5; char y = 'A'; try { //protected code if( x < 0 ) { throw x; } if(y == 'A') { throw y; } } catch (...) { cout << "Exception Caught" << endl; } }
आउटपुट
Exception Caught
जावा में यदि हम किसी भी प्रकार के अपवाद को पकड़ना चाहते हैं, तो हमें अपवाद वर्ग का उपयोग करना होगा। जो जावा में मौजूद किसी एक्सेप्शन का सुपर क्लास है, या कुछ यूजर डिफाइन्ड एक्सेप्शन भी। सिंटैक्स नीचे जैसा है -
try { //protected code } catch(Exception e) { //catch any type of exceptions }
C++ का कोई अंतत:ब्लॉक नहीं है। लेकिन जावा में एक विशेष ब्लॉक है जिसे अंत में कहा जाता है। अगर हम अंत में ब्लॉक में कुछ कोड लिखते हैं, तो इसे हमेशा निष्पादित किया जाएगा। यदि बिना किसी त्रुटि के प्रयास ब्लॉक निष्पादित किया जाता है, या अपवाद होता है, तो अंत में हर समय निष्पादित किया जाएगा।
जावा के लिए
उदाहरण
public class HelloWorld { public static void main(String []args) { try { int data = 25/5; System.out.println(data); } catch(NullPointerException e) { System.out.println(e); } finally { System.out.println("finally block is always executed"); } System.out.println("rest of the code..."); } }
आउटपुट
5 finally block is always executed rest of the code...