मुझे 3 अपवादों को संभालने के दौरान निम्न विधियों को लागू करने में थोड़ी सी परेशानी हो रही है, जिनकी मुझे देखभाल करना है। क्या मुझे कोशिश/पकड़ने वाले ब्लॉक शामिल करना चाहिए जैसे कि मैं कर रहा हूं या क्लास डिज़ाइन के बजाय एप्लिकेशन के लिए छोड़ा जाना चाहिए?जावा अपवाद हैंडलिंग विधि
विधि कहते हैं मैं इस को लागू करने वाला हूँ:
public Catalog loadCatalog(String filename)
throws FileNotFoundException, IOException, DataFormatException
इस विधि संग्रह उत्पादों की एक सूची में निर्दिष्ट से जानकारी लोड करता है और सूची देता है।
यह पढ़ने के लिए फ़ाइल खोलकर शुरू होता है। फिर यह फ़ाइल की प्रत्येक पंक्ति को पढ़ने और संसाधित करने के लिए आगे बढ़ता है।
- लाइन के प्रकार के "उत्पाद" है, तो विधि readProduct कहा जाता है:
विधि
String.startsWith
लाइन के प्रकार का निर्धारण करने के लिए प्रयोग किया जाता है। - यदि लाइन का प्रकार "कॉफी" है, तो विधि पढ़ने को विधि कहा जाता है।
- यदि लाइन का प्रकार "ब्रेवर" है, तो विधि पढ़ने को पकड़ा जाता है। कॉफीब्रेवर कहा जाता है।
के बाद लाइन संसाधित किया जाता है, loadCatalog
उत्पादों की सूची के लिए उत्पाद (उत्पाद, कॉफी या शराब बनानेवाला) कहते हैं।
जब फ़ाइल की सभी पंक्तियों को संसाधित किया गया है, loadCatalog
कॉल को बनाने वाली विधि में उत्पादों का कैटलॉग लौटाता है।
इस विधि निम्न अपवादों फेंक कर सकते हैं:
FileNotFoundException
- यदि फ़ाइलें मौजूद नहीं है।IOException
- यदि निर्दिष्ट फ़ाइल की जानकारी पढ़ने में कोई त्रुटि है।DataFormatException
- अगर एक लाइन में त्रुटियाँ हैं (अपवाद लाइन गलत डेटा की गई है,)
यहाँ मैं अब तक है:
public Catalog loadCatalog(String filename)
throws FileNotFoundException, IOException, DataFormatException{
String line = "";
try {
BufferedReader stdIn = new BufferedReader(new FileReader("catalog.dat"));
try {
BufferedReader input = new BufferedReader(
new FileReader(stdIn.readLine()));
while(! stdIn.ready()){
line = input.readLine();
if(line.startsWith("Product")){
try {
readProduct(line);
} catch(DataFormatException d){
d.getMessage();
}
} else if(line.startsWith("Coffee")){
try {
readCoffee(line);
} catch(DataFormatException d){
d.getMessage();
}
} else if(line.startsWith("Brewer")){
try {
readCoffeeBrewer(line);
} catch(DataFormatException d){
d.getMessage();
}
}
}
} catch (IOException io){
io.getMessage();
}
}catch (FileNotFoundException f) {
System.out.println(f.getMessage());
}
return null;
}
धन्यवाद, यह केवल 1 अपवाद है कि उन सभी को संभालती फेंकने के लिए एक बेहतर डिजाइन तकनीक की तरह ध्वनि करता है। मैं इसे अब से एक शॉट देता हूं। हालांकि, मैं यह उल्लेख करना भूल गया था कि इस विशेष अभ्यास (स्कूल के लिए) के लिए मुझे विधि को ठीक तरह से लागू करना है क्योंकि बाद में मुझे इसे एक प्रीपेड टेस्फाइल ऐप के माध्यम से चलाने और इसे सुनिश्चित करने के लिए सुनिश्चित करना है। – edu222