" விதிவிலக்குகள் எவ்வாறு செயல்படுகின்றன என்பதைப் பற்றி நான் உங்களுக்குச் சொல்ல விரும்புகிறேன் . கீழே உள்ள உதாரணம் என்ன நடக்கிறது என்பதற்கான தோராயமான யோசனையை உங்களுக்குத் தரும்:"
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