2012-06-09 16 views
9

मैं अपने पहले जावा प्रोजेक्ट पर काम कर रहा हूं जिसे "हार्ट राइट्स" नामक एक कक्षा को लागू किया जाता है जो उपयोगकर्ता की जन्मतिथि लेता है और अपनी अधिकतम और लक्षित हृदय गति देता है। मुख्य परीक्षण कार्यक्रम में सब कुछ एक चीज़ को छोड़कर काम करता है, मैं यह नहीं समझ सकता कि अपवाद पकड़े जाने के बाद शेष कोड को प्रिंटिंग से कैसे रोकें।अपवाद पकड़ा गया लेकिन प्रोग्राम चल रहा है

मुझे कोड के पूरे हिस्से के बारे में वास्तव में निश्चित नहीं है जहां अपवाद पकड़ा गया है क्योंकि इसकी प्रतिलिपि बनाई गई थी और प्रोफेसर ने हमें क्या दिया था। यदि कोई मुझे बता सकता है कि त्रुटि के बाद प्रोग्राम को कैसे समाप्त किया जाए, या कस्टम त्रुटि संदेश मुद्रित करें और प्रोग्राम को आगे निष्पादित करने से रोकें तो मैं इसकी सराहना करता हूं।

यहाँ कोड है:

import java.util.Scanner; 
import java.util.GregorianCalendar; 

import javax.swing.JOptionPane; 

public class HeartRatesTest { 

public static void main(String[] args) { 
    HeartRates test= new HeartRates(); 
    Scanner input = new Scanner(System.in); 
    GregorianCalendar gc = new GregorianCalendar(); 
    gc.setLenient(false); 

     JOptionPane.showMessageDialog(null, "Welcome to the Heart Rate Calculator");; 
     test.setFirstName(JOptionPane.showInputDialog("Please enter your first name: \n")); 
     test.setLastName(JOptionPane.showInputDialog("Please enter your last name: \n")); 
     JOptionPane.showMessageDialog(null, "Now enter your date of birth in Month/Day/Year order (hit enter after each): \n"); 

     try{ 
      String num1= JOptionPane.showInputDialog("Month: \n"); 
      int m= Integer.parseInt(num1); 
      test.setMonth(m); 
       gc.set(GregorianCalendar.MONTH, test.getMonth()); 
      num1= JOptionPane.showInputDialog("Day: \n"); 
      m= Integer.parseInt(num1); 
      test.setDay(m); 
       gc.set(GregorianCalendar.DATE, test.getDay()); 
      num1= JOptionPane.showInputDialog("Year: \n"); 
      m= Integer.parseInt(num1); 
      test.setYear(m); 
       gc.set(GregorianCalendar.YEAR, test.getYear()); 

       gc.getTime(); // exception thrown here 
     } 

     catch (Exception e) { 
      e.printStackTrace(); 
      } 



    String message="Information for "+test.getFirstName()+" "+test.getLastName()+": \n\n"+"DOB: "+ test.getMonth()+"/" +test.getDay()+ "/" 
      +test.getYear()+ "\nAge: "+ test.getAge()+"\nMax Heart Rate: "+test.getMaxHR()+" BPM\nTarget Heart Rate(range): "+test.getTargetHRLow() 
      +" - "+test.getTargetHRHigh()+" BPM"; 
    JOptionPane.showMessageDialog(null, message); 
} 
+0

डाल अंदर 'कोशिश {}' ब्लॉक –

उत्तर

13

वास्तव में यह सुनिश्चित नहीं है कि अपवाद पकड़े जाने के बाद आप एप्लिकेशन को क्यों समाप्त करना चाहते हैं - क्या गलत होने पर यह ठीक नहीं होगा?

किसी भी मामले में, अपनी पकड़ ब्लॉक में:

catch(Exception e) { 
    e.printStackTrace(); //if you want it. 
    //You could always just System.out.println("Exception occurred."); 
    //Though the above is rather unspecific. 
    System.exit(1); 
} 
+0

धन्यवाद, यह वही किया जो मैं खोज रहा था। मैं समझता हूं कि आपका क्या मतलब है और यह शायद बेहतर होगा, लेकिन इस परियोजना के प्रयोजन के लिए इसे एक त्रुटि को ठीक करने की अनुमति नहीं थी इसलिए मैं इसे छोड़ रहा हूं। – Mike

9

catch ब्लॉक में, कीवर्ड return का उपयोग करें:

catch(Exception e) 
{ 
    e.printStackTrace(); 
    return; // also you can use System.exit(0); 
} 

या हो सकता है आप try ब्लॉक के अंत में पिछले JOptionPane.showMessageDialog रखना चाहते हैं।

+0

क्या के बीच ... बाहर निकलने के अंतर (0) और ... बाहर निकलें (1) 'showMessageDialog'? –

7

यह सच है कि वापसी के लिए इस कार्यक्रम (मुख्य में किया जा रहा) के निष्पादन को रोकने के लिए क्या होगा है। अधिक सामान्य उत्तर होगा यदि आप किसी विधि में किसी विशेष प्रकार के अपवाद को संभाल नहीं सकते हैं, तो आपको या तो यह घोषणा करनी चाहिए कि आपने अपवाद को फेंक दिया है, या आपको अपनी अपवाद को किसी प्रकार की रनटाइम अपवाद के साथ लपेटना चाहिए और उसे उच्च परत पर फेंक देना चाहिए।

System.exit() तकनीकी रूप से भी काम करता है, लेकिन अधिक जटिल प्रणाली के मामले में इससे बचा जाना चाहिए (आपका कॉलर अपवाद को संभालने में सक्षम हो सकता है)।

tl; डॉ संस्करण:

catch(Exception e) 
{ 
    throw new RuntimeException(e); 
} 
संबंधित मुद्दे