விதிவிலக்கு வகைகள்

"இன்று நான் இன்னொரு விஷயத்தைப் பற்றி பேச விரும்பினேன். ஜாவாவில், அனைத்து விதிவிலக்குகளும் இரண்டு வகைகளாகப் பிரிக்கப்பட்டுள்ளன: சரிபார்க்கப்பட்டது மற்றும் சரிபார்க்கப்படாதவை (பிடிக்கப்பட வேண்டியவை மற்றும் நீங்கள் பிடிக்க வேண்டியவை). இயல்பாக, எல்லா விதிவிலக்குகளும் இருக்க வேண்டும். பிடிபட்டது."

"உங்கள் குறியீட்டில் வேண்டுமென்றே விதிவிலக்குகளை வீச முடியுமா?"

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

"சரி."

" ClassNotFoundException அல்லது FileNotFoundException ஒரு முறையில் வீசப்பட்டால் (நிகழ்கிறது), டெவலப்பர் அவற்றை முறை அறிவிப்பில் குறிப்பிட வேண்டும். இவை சரிபார்க்கப்பட்ட விதிவிலக்குகள். இது பொதுவாக இப்படித்தான் இருக்கும்:"

சரிபார்க்கப்பட்ட விதிவிலக்குகளின் எடுத்துக்காட்டுகள்
public static void method1() throws ClassNotFoundException, FileNotFoundException
public static void main() throws IOException
public static void main() // Doesn't throw any exceptions

"எனவே நாம் 'எறிதல்' என்பதைத் தொடர்ந்து கமாவால் பிரிக்கப்பட்ட விதிவிலக்குகளின் பட்டியலை எழுதுகிறோம், இல்லையா?"

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");
}

"இந்த எடுத்துக்காட்டில் உள்ள குறியீடு தொகுக்கப்படாது, ஏனெனில் முக்கிய முறையானது method1() ஐ அழைக்கிறது , இது பிடிக்கப்பட வேண்டிய விதிவிலக்குகளை வீசுகிறது."

"இதை தொகுக்க, முக்கிய முறைக்கு விதிவிலக்கு கையாளுதலைச் சேர்க்க வேண்டும். இதை நீங்கள் இரண்டு வழிகளில் ஒன்றில் செய்யலாம்:"

விருப்பம் 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");
}

"இதோ நாங்கள் அதை ஒரு முயற்சி-கேட்ச் மூலம் பிடிக்கிறோம் :"

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