"ஹாய், அமிகோ!"
"ஹாய், எல்லி! எப்படி இருக்கிறது வாழ்க்கை?"
"அருமை, நன்றி. எப்படி இருக்கிறீர்கள்?"
"அருமை, இன்று காலை பல புதிய விஷயங்கள் எனக்கு விளக்கப்பட்டன."
"சரி, அருமை. உனக்கு சோர்வாக இல்லையா?"
"ஆமாம், அது இருக்கிறது, நான் கொஞ்சம் சோர்வாக இருக்கிறேன்."
"அப்படியானால் உங்களுக்கு அதிர்ஷ்டம் கிடைத்தது. நான் இன்று ஒரு பெரிய, சிக்கலான தலைப்பைப் பற்றி பேச விரும்பினேன், ஆனால் கடைசி நிமிடத்தில் நான் என் மனதை மாற்றிக்கொண்டு சிறிய, எளிதான ஒன்றைப் பற்றி பேச முடிவு செய்தேன்."
"சிறியது மற்றும் எளிதானது? நான் தயாராக இருக்கிறேன்."
"இன்று விதிவிலக்குகள் என்ற தலைப்பை விரிவாக ஆராய்வோம் ."
"நீங்கள் பிழை கையாளுதல் பற்றி பேசுகிறீர்களா?"
"விதிவிலக்குகளை பிழைகள் என்று நீங்கள் நினைக்கக்கூடாது. விதிவிலக்குகள் என்பது 'எதிர்பாராத ஒன்று நடந்தது' என்ற அறிக்கைகள் போன்றது. இந்த அறிக்கைகளின் அடிப்படையில், நீங்கள் மாற்று நடவடிக்கைகளை முன்மொழியலாம்."
"இது அனைத்தும் முறைகளைப் பற்றியது. நீங்கள் ஒரு முறையை அழைக்கும்போது, அது என்ன செய்ய அழைக்கப்பட்டதோ அதைச் செய்வதாக உறுதியளிக்கிறது. "
"ஒரு முறை, எந்த காரணத்திற்காகவும், அதைச் செய்ய அழைக்கப்பட்டதைச் செய்ய முடியாவிட்டால், அது அழைப்பாளருக்குத் தெரியப்படுத்த வேண்டும்."
"வேறு வார்த்தைகளில் கூறுவதானால், நடக்கக்கூடிய மிக மோசமான விஷயம் என்னவென்றால், ஒரு முறை அதன் வேலையைச் செய்யாமல் இருப்பது மற்றும் அதைப் பற்றி யாரிடமும் சொல்லக்கூடாது. அதைவிட மோசமாக எதுவும் இருக்க முடியாது. அது நிகழும்போது நீங்கள் நிலைமையின் கட்டுப்பாட்டை இழக்கிறீர்கள். "
"நீங்கள் ஒரு புதிய புரோகிராமராக இருக்கும்போது, நீங்கள் முறைகளை அழைப்பது போல் தெரிகிறது, நீங்கள் அவர்களிடம் கேட்டதை அவர்கள் நிச்சயமாக செய்வார்கள்."
"நீங்கள் ஒரு அனுபவமிக்க புரோகிராமராக இருக்கும்போது, அதன் வேலையைச் செய்வதற்கான ஒரு முறையின் திறனைப் பாதிக்கும் காரணிகள் டஜன் கணக்கானவை இருக்கலாம், மேலும் ஒரு முறை அதன் வேலையை முடிப்பதைத் தடுக்கக்கூடிய பல வழக்குகள் உள்ளன என்பதை நீங்கள் அறிவீர்கள்."
"புரோகிராமரின் கண்ணோட்டத்தில், ஒரு நிரல் பிழையை எதிர்கொள்ளும் போது செயலிழந்துவிட்டால், பின்னர் என்ன நடந்தது என்பதை பயனர் உணராமல் (தவறாக) தொடர்ந்து வேலை செய்வதை விட, அது ஆயிரம் மடங்கு சிறந்தது."
"எனவே, நிரல் மூடப்பட்டு, எல்லா தரவையும் இழந்ததை விட, ஏதேனும் தவறாகக் காட்டும் நிரல் மோசமாக இருக்குமா?"
"நிரல் எதையாவது தவறாகக் காட்டுகிறது என்று நீங்கள் நினைத்தது எது? ஒருவேளை நிரல்களில் நிறைய பிழைகள் இருக்கலாம் மற்றும் உங்கள் தரவு அனைத்தும் மீளமுடியாமல் தொலைந்து போகுமா? நீங்கள் 3 மணிநேரம் உரையில் தட்டச்சு செய்தீர்கள் என்று வைத்துக்கொள்வோம், ஆனால் அது எதுவும் சேமிக்கப்படாது, ஏனெனில் ஒரு இரண்டு நிமிடங்களுக்குப் பிறகு ஏற்பட்ட பிழை."
"ஒரு புதிய புரோகிராமர் விதிவிலக்குகளை சந்திக்கும் போது, அவர் விரக்தி அடைகிறார்."
"ஆனால் உண்மையில், விதிவிலக்குகள் அவர் எதிர்பார்த்திருக்க வேண்டிய ஆனால் செய்யாத அனைத்து சாத்தியமான காட்சிகளையும் வெளிப்படுத்துகின்றன."
"விதிவிலக்குகளைக் கையாள வேண்டாம் என்று நீங்கள் தேர்வு செய்யலாம், அது உங்களை ஒரு மோசமான புரோகிராமராக மாற்றிவிடும். ஆனால் உங்கள் முறைகள் விதிவிலக்குகளைத் தரவில்லை என்றால், நீங்கள் ப்ரோக்ராமர் இல்லை - ஏனெனில் இந்த எளிய உண்மையை நீங்கள் புரிந்து கொள்ளத் தவறிவிட்டீர்கள்:"
"ஒரு முறை அதைச் செய்ய எழுதப்பட்டதைச் செய்கிறது, அல்லது அது ஒரு விதிவிலக்கைத் தருகிறது. மூன்றாவது விருப்பம் இல்லை!"
"சரி, நான் உன்னை நம்புகிறேன். விதிவிலக்குகளைப் பயன்படுத்துவேன் என்று உறுதியளிக்கிறேன்."
"அருமையானது. விதிவிலக்குகளின் படிநிலையைப் பற்றி நான் உங்களுக்குச் சொல்கிறேன்:"

"விதிவிலக்கு படிநிலை நான்கு வகுப்புகளை அடிப்படையாகக் கொண்டது."
"குறைந்த அடிப்படை வகுப்பு எறியக்கூடியது ."
" பிழை மற்றும் விதிவிலக்கு வகுப்புகள் அதைப் பெறுகின்றன."
" RuntimeException விதிவிலக்கைப் பெறுகிறது ."
" பிழை வகுப்பு என்பது StackOverFlow , OutOfMemory , ..." போன்ற JVM பிழைகளுக்கான அடிப்படை வகுப்பாகும். "
"ஒரு நிரல் பொதுவாக இதுபோன்ற பிழைகளில் இருந்து மீள முடியாது, இது நிறுத்தப்படுவதற்கு வழிவகுக்கிறது."
"உண்மையில், நிரல் தொடர்ந்து இயங்குவதற்கு போதுமான நினைவகம் இல்லையென்றால் அல்லது ஸ்டாக் ஓவர்ஃப்ளோ இருந்தால் என்ன செய்ய முடியும்?"
" விதிவிலக்கு என்பது ஒரு நிரலால் எறியப்படும் அனைத்து சாதாரண விதிவிலக்குகளுக்கும் அடிப்படை வகுப்பு. RuntimeException என்பது சற்று வித்தியாசமான விதிகளைக் கொண்ட ஒரு சிறப்பு வகை விதிவிலக்கு ."
"அவை என்ன?"
"அதைத்தான் நான் இப்போது விளக்கப் போகிறேன்."
"நீங்கள் நினைவில் வைத்திருப்பது போல், விதிவிலக்குகள் இரண்டு வகைகளாகப் பிரிக்கப்படுகின்றன: சரிபார்க்கப்பட்டது மற்றும் சரிபார்க்கப்படவில்லை ."
"ஒரு முறை சரிபார்க்கப்பட்ட விதிவிலக்குகளை எறிந்தால் , அதை அழைக்கும் முறை அழைப்பை முயற்சி-பிடிப்பு பிளாக்கில் மடிக்க வேண்டும். சரி, அது அல்லது முறை கையொப்பத்தில் வீசுதல்களை தெளிவாகக் குறிப்பதன் மூலம் விதிவிலக்கை (அதன் அழைப்பாளருக்கு) திரும்பப் பெறவும் ."
"இந்த விதிகள்/கட்டுப்பாடுகள் சரிபார்க்கப்படாத விதிவிலக்குகளுக்குப் பொருந்தாது."
"எனவே, விதிவிலக்கு மரபுரிமையாகக் கருதப்படும் அனைத்து விதிவிலக்குகளும் சரிபார்க்கப்பட்டதாகக் கருதப்படும். RuntimeExceptionஐப் பெற்ற விதிவிலக்குகளைத் தவிர, அவை சரிபார்க்கப்படாததாகக் கருதப்படும்."
"ஊஹூம். நீங்க முன்னாடியே இப்படிச் சொன்னது ஞாபகம் இருக்கு."
"அமிகோ! அவர்கள் ஒவ்வொரு நேர்காணலிலும் விதிவிலக்கு படிநிலை பற்றி கேட்கிறார்கள் . நான் அதை மீண்டும் சொல்கிறேன் - ஒவ்வொரு நேர்காணலிலும் . நீங்கள் இந்த தலைப்பை சரியாக அறிந்து கொள்ள வேண்டும்."
"சரி. நான் எல்லாவற்றையும் மீண்டும் படித்து தெரிந்து கொள்கிறேன். எனக்கு உதவியதற்கு நன்றி, எல்லி."
GO TO FULL VERSION