जेएलएस के मुताबिक: यह एक संकलित-समय त्रुटि है यदि एक आवृत्ति चर प्रारंभकर्ता या नामित वर्ग का इंस्टेंस प्रारंभकर्ता एक अपवाद वर्ग को फेंक सकता है, जब तक कि अपवाद वर्ग या उसके सुपरक्लास को स्पष्ट रूप से घोषित नहीं किया जाता अपनी कक्षा के प्रत्येक कन्स्ट्रक्टर के फेंकने वाले खंड में और कक्षा में कम से कम एक स्पष्ट रूप से घोषित कन्स्ट्रक्टर है।चेक अपवाद और प्रारंभकर्ता ब्लॉक
मैं करता हूँ तो अगर इस -
class A{
{
throw new FileNotFoundException();
}
public A() throws IOException{
// TODO Auto-generated constructor stub
}
}
यह एक संकलन समय त्रुटि देता है "प्रारंभकर्ता सामान्य रूप से पूरा करना होगा"
जबकि
class A{
{
File f=new File("a");
FileOutputStream fo=new FileOutputStream(f);
fo.write(3);
}
public A() throws IOException{
// TODO Auto-generated constructor stub
}
}
इस कोड को किसी भी संकलन समय प्रदर्शित नहीं करता है त्रुटि। पिछला कोड संकलित क्यों नहीं करता है भले ही मैंने कन्स्ट्रक्टर में थ्रो क्लॉज घोषित किया हो?
आपने बिना शर्त अपवाद को फेंकने के लिए प्रारंभकर्ता ब्लॉक को बताया, आप और क्या उम्मीद करेंगे? – skuntsel