2014-07-25 4 views
5

runnable Jar programs के लिए मैं बना देता हूं, अगर मैं इसे कमांड प्रॉम्प्ट (java -jar myprogram.jar) से चलाता हूं तो मैं अनचाहे अपवाद पढ़ सकता हूं।रननेबल जार प्रोग्राम कैसे बनाएं जो चुपचाप विफल न हों?

उदाहरण कोड:

public static void main(String args[]) { 
    try { 
     EntireProgram(); 
    } catch (Throwable t) { 
     throw new Error("somehow our error handling code has errors"); 
    } 
} 

public static void EntireProgram() { 
    System.out.println(1/0); 
} 

कमांड लाइन उत्पादन:

enter image description here

हालांकि, अगर मैं द्वारा जार कार्यक्रम चलाने पर डबल-क्लिक (सबसे अंत उपयोगकर्ताओं की उम्मीद) , अनचाहे अपवाद चुप रहें। मैंने देखा है कि यह "देशी Windows प्रोग्राम" जो मेरा मानना ​​है कि ओएस डिफ़ॉल्ट प्रबंधक (मॉडल संवाद संदेश) द्वारा नियंत्रित बिना क्रिया अपवाद के विपरीत है:

enter image description here

enter image description here enter image description here

इस तरह से अनचाहे अपवादों को संभालने का लाभ यह है कि उपयोगकर्ता कुछ गलत हुआ है (और शायद इसकी उम्मीद है, उम्मीद है)।

मैं अपने प्रोग्राम के अनचाहे अपवादों को इस तरह से कैसे संभाला जा सकता हूं?

उत्तर

1

आप अपने कैच ब्लॉक में इस तरह की एक पंक्ति क्यों नहीं जोड़ते हैं .. जो आपको अपना ऐप चलाने के बावजूद त्रुटि संदेश दिखाएगा।

javax.swing.JOptionPane.showMessageDialog(null,"Something is really wrong..Hence notifying you.."); 
+1

मुझे नहीं लगता कि यह काम करेगा। मैं एक समस्या में फंस गया, जहां मेरे 'स्विंग' आधारित एप्लिकेशन को 'जावा 1.6' और उससे ऊपर की आवश्यकता होती है, लेकिन जब मैं जावा के निचले संस्करण में उस एप्लिकेशन को निष्पादित कर रहा था तो यह कुछ भी नहीं दिखा रहा था, यहां तक ​​कि मैंने' showMessageDialog' को पकड़ लिया था ब्लॉक, क्योंकि 'ClassNotFoundError' नामक त्रुटि हुई थी। – Vishrant

+0

@ user3505725, वहां * अभी भी त्रुटियां होंगी। हम कोड को त्रुटि मुक्त होने की उम्मीद नहीं कर सकते हैं, इस प्रकार हम त्रुटि-हैंडलिंग कोड (showMessageDialog) को त्रुटि मुक्त होने की उम्मीद नहीं कर सकते हैं। हम ओएस को त्रुटि-हैंडलिंग की ज़िम्मेदारी कैसे बदल सकते हैं? – Pacerier

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