कभी-कभी हमें जावा में एक अपवाद को फिर से फेंकने की आवश्यकता हो सकती है। यदि कोई कैच ब्लॉक उस विशेष अपवाद को संभाल नहीं सकता है जिसे उसने पकड़ा है, तो हम अपवाद को फिर से फेंक सकते हैं। रीथ्रो एक्सप्रेशन के कारण मूल रूप से फेंकी गई वस्तु को फिर से फेंक दिया जाता है।
चूंकि अपवाद पहले से ही उस दायरे में पकड़ा गया है जिसमें रीथ्रो अभिव्यक्ति होती है, इसे अगले संलग्न करने वाले प्रयास ब्लॉक में फिर से फेंक दिया जाता है। इसलिए, इसे उस दायरे में कैच ब्लॉक द्वारा नियंत्रित नहीं किया जा सकता है जिसमें रीथ्रो एक्सप्रेशन हुआ था। संलग्न प्रयास ब्लॉक के लिए किसी भी कैच ब्लॉक में अपवाद को पकड़ने का अवसर होता है।
सिंटैक्स
catch(Exception e) { System.out.println("An exception was thrown"); throw e; }
उदाहरण
public class RethrowException { public static void test1() throws Exception { System.out.println("The Exception in test1() method"); throw new Exception("thrown from test1() method"); } public static void test2() throws Throwable { try { test1(); } catch(Exception e) { System.out.println("Inside test2() method"); throw e; } } public static void main(String[] args) throws Throwable { try { test2(); } catch(Exception e) { System.out.println("Caught in main"); } } }
आउटपुट
The Exception in test1() method Inside test2() method Caught in main