
"मला आज आणखी एका गोष्टीबद्दल बोलायचे आहे. Java मध्ये, सर्व अपवाद दोन प्रकारांमध्ये विभागले गेले आहेत: चेक केलेले आणि अनचेक केलेले (ज्यांना पकडले पाहिजे आणि जे तुम्हाला पकडायचे नाहीत). डीफॉल्टनुसार, सर्व अपवाद असणे आवश्यक आहे. झेल."
"तुम्ही तुमच्या कोडमध्ये हेतुपुरस्सर अपवाद टाकू शकता?"
"तुम्ही तुमच्या स्वतःच्या कोडमध्ये कोणताही अपवाद टाकू शकता. तुम्ही तुमचे स्वतःचे अपवाद देखील लिहू शकता. परंतु आम्ही त्याबद्दल नंतर बोलू. आत्ता, जावा मशीनने टाकलेल्या अपवादांवर लक्ष केंद्रित करूया."
"ठीक आहे."
"जर ClassNotFoundException किंवा FileNotFoundException एखाद्या पद्धतीमध्ये फेकले गेले (आहेत) तर, विकासकाने त्यांना पद्धतीच्या घोषणेमध्ये सूचित केले पाहिजे. हे तपासलेले अपवाद आहेत. हे सहसा असे दिसते:"
तपासलेल्या अपवादांची उदाहरणे |
---|
|
|
|
"म्हणून आम्ही फक्त 'थ्रो' लिहितो आणि त्यानंतर अपवादांची स्वल्पविरामाने मर्यादित केलेली यादी, बरोबर?"
method1
"होय. पण अजून काही आहे. प्रोग्राम संकलित करण्यासाठी, खालील उदाहरणामध्ये कॉल करणार्या पद्धतीने दोनपैकी एक गोष्ट करणे आवश्यक आहे: एकतर हे अपवाद पकडा किंवा त्यांना (कॉलरला) पुन्हा फेकून द्या , त्याच्या घोषणेमध्ये पुन्हा दिलेले अपवाद दर्शवितात. "
"पुन्हा. जर तुमच्या मुख्य पद्धतीला ' थ्रो FileNotFoundException , ...' समाविष्ट असलेल्या मेथडला कॉल करायचा असेल , तर तुम्हाला दोन गोष्टींपैकी एक करणे आवश्यक आहे:
1) FileNotFoundException पकडा , …
तुम्ही असुरक्षित पद्धतीला कॉल करणारा कोड ट्राय-कॅच ब्लॉकमध्ये गुंडाळला पाहिजे.
2) FileNotFoundException पकडू नका , …
तुम्ही तुमच्या मुख्य पद्धतीच्या थ्रो सूचीमध्ये हे अपवाद जोडले पाहिजेत ."
"तुम्ही मला एक उदाहरण देऊ शकता?"
"हे पहा:"
public static void main(String[] args)
{
method1();
}
public static void method1() throws FileNotFoundException, ClassNotFoundException
{
//Throws FileNotFoundException if the file doesn't exist
FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}
"या उदाहरणातील कोड संकलित होणार नाही, कारण मुख्य पद्धत मेथड1() ला कॉल करते , जे अपवाद सोडते जे पकडले जावेत."
"ते संकलित करण्यासाठी, आम्हाला मुख्य पद्धतीमध्ये अपवाद हाताळणी जोडणे आवश्यक आहे. तुम्ही हे दोनपैकी एका मार्गाने करू शकता:"
public static void main(String[] args) throws FileNotFoundException, ClassNotFoundException
{
method1();
}
public static void method1() throws FileNotFoundException, ClassNotFoundException
{
//Throws FileNotFoundException if the file doesn't exist
FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}
"आणि इथे आम्ही प्रयत्न करून पकडतो :"
public static void main(String[] args)
{
try
{
method1();
}
catch(Exception e)
{
}
}
public static void method1() throws FileNotFoundException, ClassNotFoundException
{
//Throws FileNotFoundException if the file doesn't exist
FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}
"हे अधिक स्पष्ट होऊ लागले आहे."
"खालील उदाहरण पहा. ते तुम्हाला बाकीचे समजण्यास मदत करेल."
public static void method2() throws FileNotFoundException, ClassNotFoundException
{
method1();
}
public static void method3() throws ClassNotFoundException
{
try
{
method1();
}
catch (FileNotFoundException e)
{
System.out.println("FileNotFoundException has been caught.");
}
}
public static void method4()
{
try
{
method1();
}
catch (FileNotFoundException e)
{
System.out.println("FileNotFoundException has been caught.");
}
catch (ClassNotFoundException e)
{
System.out.println("ClassNotFoundException has been caught.");
}
}
"आणखी एक प्रकारचा अपवाद आहे, RuntimeException आणि त्याचे वारसा असलेले वर्ग. तुम्हाला ते पकडण्याची गरज नाही. हे अनचेक केलेले अपवाद आहेत. त्यांना अंदाज लावणे कठीण मानले जाते. तुम्ही त्यांच्याशी तशाच प्रकारे व्यवहार करू शकता, परंतु तुम्ही त्यांना थ्रो क्लॉजमध्ये सूचित करण्याची आवश्यकता नाही ."
GO TO FULL VERSION