மல்டி கேட்ச் எவ்வாறு செயல்படுகிறது - 1

"இன்னும் சில சுவாரஸ்யமான பாடங்கள். ஓ, நான் எப்படி கற்பிக்க விரும்புகிறேன்!"

"பல கேட்ச் பிளாக்குகள் எவ்வாறு செயல்படுகின்றன என்பதைப் பற்றி நான் உங்களுக்குச் சொல்ல விரும்புகிறேன் . இது மிகவும் எளிமையானது: ட்ரை பிளாக்கில் விதிவிலக்குகள் ஏற்படும் போது, ​​செயல்படுத்தல் முதல் கேட்ச் பிளாக்கிற்கு நகர்கிறது."

"கேட்ச் பிளாக்கின் அடைப்புக்குறிக்குள் குறிப்பிடப்பட்டுள்ள வகை, எறியப்பட்ட விதிவிலக்கின் வகையுடன் பொருந்தினால், அந்தத் தொகுதிக்குள் செயல்படுத்தல் தொடங்குகிறது. இல்லையெனில், அடுத்த கேட்ச் பிளாக்கிற்குச் செல்கிறோம் , அங்கு அதே சோதனை செய்யப்படுகிறது."

"எங்கள் கேட்ச் பிளாக்குகள் தீர்ந்துவிட்டால் , விதிவிலக்கு பிடிக்கப்படவில்லை என்றால், அது மீண்டும் தூக்கி எறியப்படும், மேலும் தற்போதைய முறை அசாதாரணமாக முடிவடையும்."

"நான் பார்க்கிறேன். விதிவிலக்கு வகையுடன் ஒத்துப்போகும் கேட்ச் பிளாக் தான் செயல்படுத்தப்படும்."

"ஆம், சரி. இருப்பினும், உண்மையில் இது சற்று சிக்கலானது. வகுப்புகள் மற்ற வகுப்புகளைப் பெறலாம். ஒரு மாடு ஒரு விலங்கு வகுப்பைப் பெற்றால், மாட்டுப் பொருள் ஒரு பசு மாறியால் மட்டுமல்ல, ஒரு விலங்கு மாறி மூலமாகவும் குறிப்பிடப்படலாம். "

"மற்றும்?"

"எல்லா விதிவிலக்குகளும் விதிவிலக்கு அல்லது RuntimeException ( விதிவிலக்கு ) ஆகியவற்றைப் பெற்றிருப்பதால், 'catch ( Exception e)' அல்லது ' catch (RuntimeException e) ' ஐப் பயன்படுத்தி அவர்கள் இன்னும் பிடிக்கப்படலாம் ."

"மற்றும்?"

"நாம் இரண்டு முடிவுகளை எடுக்கலாம். முதலில், நீங்கள் 'பிடிப்பு (விதிவிலக்கு இ)' ஐப் பயன்படுத்தி ஏதேனும் விதிவிலக்கைப் பிடிக்கலாம். இரண்டாவதாக, கேட்ச் பிளாக்குகளின் வரிசை முக்கியமானது. "

"இங்கே சில உதாரணங்கள்:"

" ArithmeticExceptionநாம் 0 ஆல் வகுத்த பிறகு ஏற்படும் இரண்டாவது கேட்ச் பிளாக்கில் பிடிக்கப்படும்."

குறியீடு
try
{
    System.out.println("Before calling method1.");
    int a = 1 / 0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
    System.out.println("Division by zero. Exception has been caught.");
}
catch (Exception e)
{
    System.out.println("Any other errors. Exception has been caught.");
}

"கீழே உள்ள எடுத்துக்காட்டில், ArithmeticExceptionமுதல் கேட்ச் பிளாக்கில் பிடிக்கப்படும், ஏனென்றால் எல்லா விதிவிலக்குகளும் விதிவிலக்கைப் பெறுகின்றன, அதாவது Exceptionஅனைத்து விதிவிலக்குகளையும் உள்ளடக்கும். "

குறியீடு
try
{
    System.out.println("Before calling method1.");
    int a = 1/0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (Exception e)
{
    System.out.println("Any other errors. Exception has been caught.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
    System.out.println("Divided by zero. Exception has been caught.");
}

"கீழே உள்ள எடுத்துக்காட்டில், ArithmeticExceptionபிடிபடாது. அது மீண்டும் அழைக்கும் முறைக்கு மாற்றப்படும்."

குறியீடு
try
{
    System.out.println("Before calling method1.");
    int a = 1/0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}

"இது விஷயங்களைச் சிறிது தெளிவுபடுத்தியது. இந்த விதிவிலக்குகள் எளிதான தலைப்பு அல்ல."

"அது அப்படித்தான் தெரிகிறது. அவை உண்மையில் ஜாவாவில் உள்ள எளிய விஷயங்களில் ஒன்றாகும்."

"இதில் மகிழ்ச்சி அடைவதா அல்லது வருத்தப்படுவதா என்று எனக்குத் தெரியவில்லை..."