" अपवाद कसे कार्य करतात याबद्दल मी तुम्हाला थोडेसे सांगू इच्छितो . खालील उदाहरणाने तुम्हाला काय होते याची अंदाजे कल्पना दिली पाहिजे:"
class ExceptionExampleOriginal
{
public static void main(String[] args)
{
System.out.println("main begin");
try
{
System.out.println("main before call");
method1();
System.out.println("main after call");
}
catch (RuntimeException e)
{
String s = e.getMessage();
System.out.println(s);
}
System.out.println("main end");
}
public static void method1()
{
System.out.println("method1 begin");
method2();
System.out.println("method1 end");
}
public static void method2()
{
System.out.println("method2");
String s = "Message: Unknown Exception";
throw new RuntimeException(s);
}
}
public class ExceptionExample
{
private static Exception exception = null;
public static void main(String[] args)
{
System.out.println("main begin");
System.out.println("main before call");
method1();
if (exception == null)
{
System.out.println("main after call");
}
else if (exception instanceof RuntimeException)
{
RuntimeException e = (RuntimeException) exception;
exception = null;
String s = e.getMessage();
System.out.println(s);
}
System.out.println("main end");
}
public static void method1()
{
System.out.println("method1 begin");
method2();
if (exception != null) return;
System.out.println("method1 end");
}
public static void method2()
{
System.out.println("method2");
String s = "Message: Unknown Exception";
exception = new RuntimeException(s);
return;
}
}
"मी पूर्णपणे हरवले आहे."
"ठीक आहे. काय चालले आहे ते मला समजावून सांगू."
"डावीकडील उदाहरणामध्ये, आम्ही एकापाठोपाठ काही पद्धती कॉल करतो. मध्ये method2
, आम्ही मुद्दाम अपवाद तयार करतो आणि टाकतो (आम्ही एक त्रुटी निर्माण करतो)."
"उजवीकडील उदाहरण काय घडत आहे ते दर्शविते."
"पहा method2
. अपवाद निर्माण करण्याऐवजी, आम्ही एक RuntimeException
ऑब्जेक्ट बनवतो, तो स्टॅटिक व्हेरिएबलमध्ये सेव्ह करतो exception
आणि नंतर return
स्टेटमेंट वापरून ताबडतोब मेथडमधून बाहेर पडतो."
"मध्ये method1
, कॉल केल्यानंतर method2
, आम्ही अपवाद आहे की नाही ते तपासतो. अपवाद असल्यास, नंतर method1
एकाच वेळी संपतो. जावा मधील प्रत्येक (!) मेथड कॉलनंतर अशा प्रकारची तपासणी अप्रत्यक्षपणे केली जाते."
"व्वा!"
"व्वा बरोबर आहे."
"उजव्या स्तंभात, ट्राय-कॅच कन्स्ट्रक्ट वापरून एखादा अपवाद पकडला जातो तेव्हा अंदाजे काय होते हे दाखवण्यासाठी मी मुख्य पद्धत वापरली आहे. अपवाद नसल्यास, सर्वकाही अपेक्षेप्रमाणे चालू राहते. अपवाद असल्यास आणि ते कॅच स्टेटमेंटमध्ये समान प्रकार निर्दिष्ट केला आहे, मग आम्ही ते हाताळू."
"काय throw
आणि instanceof
म्हणजे काय? "
"शेवटची ओळ पहा: throw new RuntimeException(s);
. तुम्ही अपवाद कसा तयार करता आणि टाकता. आम्ही त्यावर अजून काम करणार नाही. ते फक्त एक उदाहरण होते."
"आम्ही ऑब्जेक्ट प्रकाराचा आहे a instanceof B
की नाही हे तपासण्यासाठी वापरतो , म्हणजे व्हेरिएबल अपवादाने संदर्भित ऑब्जेक्ट RuntimeException आहे का. ही एक बुलियन अभिव्यक्ती आहे."a
B
"मला वाटतं मला समजलंय. जवळपास."
GO TO FULL VERSION