பைடன் பதிவில் ஸ்டாக்ட்ரேஸை அச்சிடவும்

Paitan Pativil Staktresai Accitavum



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

எடுத்துக்காட்டு 1: ட்ரேஸ்பேக் தொகுதியைப் பயன்படுத்தி பைத்தானில் ஸ்டாக்ட்ரேஸை அச்சிடவும்

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

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







ட்ரேஸ்பேக் பைதான் நூலகத்தை இறக்குமதி செய்வதன் மூலம் குறியீட்டை செயல்படுத்துவதன் மூலம் தொடங்குவோம். பின்னர், பின்வரும் வரியில், நாம் ஒரு வரிசையை உருவாக்கி, சில மதிப்புகளுடன் உறுப்புகளை பட்டியலிடுகிறோம். வரிசைப் பட்டியலின் மதிப்புகள் “7”, “8”, “9”, மற்றும் “10” ஆகும். வரிசை பட்டியலில் நான்கு மதிப்புகள் உள்ளன. இந்த வரிசை பட்டியல் முன்பு துவக்கப்பட்ட மாறி 'A' இல் சேமிக்கப்பட்டது.



அதைத் தொடர்ந்து, பின்வரும் வரியில் 'முயற்சி' என்ற சொல்லையும் 'A=6' மதிப்பையும் பயன்படுத்துகிறோம். விதிவிலக்குகளை நிர்வகிப்பதற்கு பைத்தானில் உள்ள முயற்சி தவிர தொகுதிகளைப் பயன்படுத்துகிறோம். பிளாக் ஹெடரில் பிழையை ஏற்படுத்தக்கூடிய ஸ்கிரிப்டை எழுத இந்த அணுகுமுறை பயன்படுத்தப்படுகிறது. விதிவிலக்குகள் அடிப்படையில் பிழைகள், தொடரியல் பிழைகள் போன்றவை. ஒரு நிரலின் விதிவிலக்கின் போது, ​​விதிவிலக்கு கையாளுதல் என்பது விதிவிலக்குக்கு பதிலளிக்கும் தனித்துவமான செயலாகும். ஸ்கிரிப்ட்டுக்குத் திரும்புகையில், அடுத்த வரியில் 'தவிர' என்பதைப் பயன்படுத்துகிறோம்.



தவிர தொகுதியில், 'traceback.print exc()' ஐப் பயன்படுத்துகிறோம், இது 'அச்சிடும் விதிவிலக்கு' என்பதன் சுருக்கமாகும். விதிவிலக்கு பெட்டியில் உள்ள “அச்சு()” செயல்பாட்டைப் பயன்படுத்துகிறோம், இது “நிரல் முடிவு” ஆகும், இதனால் விதிவிலக்கு எழும்போது இந்த அறிக்கை அச்சிடப்படும். இப்போது, ​​முயற்சி பெட்டியில் விதிவிலக்கு ஏற்பட்டால், நிரல் உடனடியாக தவிர தொகுதிகளுக்கு நகர்ந்து தொடர்கிறது. விதிவிலக்கு ஏற்படவில்லை என்றால், விதிவிலக்கு தொகுதி முற்றிலும் தவிர்க்கப்படும். இப்போது விதிவிலக்கு நடந்தால், வரிசைப் பட்டியலில் இல்லாவிட்டாலும் “6” மதிப்பு முயற்சிப் பெட்டியில் உள்ளிடப்பட்டிருப்பதைக் குறியீட்டில் பார்க்கலாம். இதன் விளைவாக, குறியீடு உடனடியாக விதிவிலக்கு பெட்டிக்குச் சென்று, வெளியீட்டு காட்சியில் “நிரல் முடிகிறது” என்ற அறிக்கையை அச்சிடுகிறது.





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



எடுத்துக்காட்டு 2: பைத்தானில் லாக்கிங்.எக்ஸப்சன்() முறையைப் பயன்படுத்தி ஸ்டாக்ட்ரேஸை அச்சிடவும்

இந்த எடுத்துக்காட்டில், பைத்தானின் “logging.exception()” முறையை எவ்வாறு ஸ்டாக்ட்ரேஸை வெளியிடுவது என்பதை விளக்குவோம். பைத்தானில் உள்ள லாக்கிங் தொகுப்பு பிழைகளை பதிவு செய்யவும், பிழைகள் மற்றும் விதிவிலக்குகளை பதிவு செய்யவும் உதவுகிறது. 'பிழைத்திருத்தம்', 'தகவல்', 'எச்சரிக்கை', 'பிழை' மற்றும் 'முக்கியமானது' உள்ளிட்ட பதிவுத் தொகுதிகளின் தேர்வை லாக்கிங் மாட்யூல்கள் நமக்கு வழங்குகின்றன. இவை அடிப்படையில் லாக்கிங் தொகுதிகளின் அடுக்குகள், எளிமையாகச் சொல்வதென்றால். பைத்தானில் பிழையுடன் ஒரு விதிவிலக்கைப் பதிவு செய்ய, “logging.exception()” செயல்பாட்டைப் பயன்படுத்தவும். இந்தச் செயல்பாடு பிழை நிலையுடன் கூடிய அறிக்கையை இந்த லாகருக்குச் சேர்க்கிறது. அளவுருக்கள் பிழைத்திருத்தத்திற்கானவை என்று நம்பப்படுகிறது. விதிவிலக்கு பற்றிய தகவல் பதிவு அறிக்கையுடன் இணைக்கப்பட்டுள்ளது. இந்த நடைமுறையைத் தொடங்குவதற்கான ஒரே இடம் விதிவிலக்கு கையாளுபவர்களாக இருக்க வேண்டும்.

இப்போது, ​​குறியீட்டைப் பார்ப்போம். முதலில், நாங்கள் இரண்டு நூலகங்களை இறக்குமதி செய்கிறோம் - அதில் முதலாவது லாக்கிங் மற்றும் இரண்டாவது ட்ரேஸ்பேக். பின்னர், 'லாக்கிங்' உடன் 'basicConfig' முறையைப் பயன்படுத்துகிறோம் மற்றும் 'logging.Debug' என நிலை குறிப்பிடுகிறோம். 'getLogger()' முறை எடுக்கும் ஒரே வாதம் 'பெயர்'. எனவே, 'logging.getlogger' செயல்பாட்டைப் பயன்படுத்தும் போது அதைப் பயன்படுத்துகிறோம். ஒரு பெயர் கொடுக்கப்பட்டால், அந்த பெயருடன் ஒரு லாகர் நிகழ்வின் குறிப்பு உருவாக்கப்படும்; இல்லையெனில், ரூட் திரும்பும். ஒரே லாகர் பொருள் ஒரே அடையாளத்துடன் பல getLogger() செயல்பாடுகளால் குறிப்பிடப்படுகிறது.

பின்னர், நாங்கள் முயற்சிக்கப் பயன்படுத்துகிறோம், மேலும் முயற்சித் தொகுதியில் எங்களுக்குத் தெரிந்தபடி, விதிவிலக்கு அளிக்கக்கூடிய குறியீட்டை எழுதுகிறோம். இந்த வழக்கில், நாம் 'myfunction()' ஐப் பயன்படுத்துகிறோம். கொடுக்கப்பட்ட சூழ்நிலை பொருந்தவில்லை என்றால், ஒரு விதிவிலக்கு ஏற்படுகிறது. பின்னர், குறியீடு உடனடியாக தவிர தொகுதிக்கு தாவுகிறது. இந்த விதிவிலக்கு வலைப்பதிவில், 'logging.info' ஐப் பயன்படுத்துகிறோம். அதன் உள்ளே, 'விதிவிலக்கு நடந்தது' என்று அச்சிட விரும்பும் செய்தியை எழுதுகிறோம். ஏனென்றால், விதிவிலக்கு ஏற்பட்டால், ஒரு பிழை ஏற்பட்டால், அது இந்த செய்தியை திரையில் காண்பிக்கும். ஆனால் பிழை ஏற்படவில்லை என்றால், அது முழு விதிவிலக்கு செய்தியையும் புறக்கணிக்கிறது.

செய்தியுடன் “exc info=True” என்பதையும் அமைக்கிறோம். 'logger.exception()' இல் நடப்பது போலவே, exc தகவல் True என அமைக்கப்படும் போது, ​​முழு ஸ்டாக்ட்ரேஸும் லாக்கிங்கில் சேர்க்கப்படும். ஒரே வித்தியாசம் என்னவென்றால், லாக்கரை மாற்றுவதன் மூலம் பதிவு அளவை பிழையிலிருந்து வேறு ஏதாவது நிலைக்கு விரைவாக மாற்றலாம்.

இப்போது ஸ்கிரிப்ட்டில் ஒரு விதிவிலக்கு ஏற்பட்டது, வெளியீட்டின் முதல் வரியானது 'விதிவிலக்கு நடந்தது' செய்தியாகும், அதைத் தொடர்ந்து ஸ்கிரிப்ட்டில் பயன்படுத்தப்பட்ட பதிவு நிலை 'தகவல்' ஆகும். இந்த வழக்கில் லாக்கரின் பெயர் வேராக தோன்றுகிறது. பின்னர், ட்ரேஸ்பேக் அழைப்பு, தொகுதி, வரி மற்றும் கோப்பு பெயர்களைக் காண்பிக்கும். இறுதியாக, பிழை செய்தி 'myfunction' வரையறுக்கப்படவில்லை.

பதிவு செய்வதைப் பயன்படுத்தும் மேலும் சில குறியீடுகளைப் பற்றி பேசலாம். விதிவிலக்கு() முறையானது பதிவு செய்வதற்கு நூலகத்தை இறக்குமதி செய்வதன் மூலம் தொடங்குகிறது. அடுத்து, இரண்டு மாறிகள் - 'm' மற்றும் 'n' - துவக்கப்பட்டு, முறையே '7' மற்றும் '0' மதிப்புகள் கொடுக்கப்படுகின்றன. ட்ரை பிளாக் இப்போது அடுத்த கட்டத்தில் பயன்படுத்தப்படுகிறது. அதற்குள், விதிவிலக்கு ஏற்படுத்தக்கூடிய குறியீட்டை எழுதுகிறோம். முதலில், 'o' என்ற மாறியை அறிவிக்கிறோம். பின்னர், 'm' ஐ 'n' ஆல் வகுத்து அமைக்கிறோம். வகுத்தல் பூஜ்ஜியமாக இருப்பதால், எந்த எண்ணையும் பூஜ்ஜியத்தால் வகுக்க முடியாது, அதாவது பிழைகள் எழும். இதன் விளைவாக, குறியீடு 'logging.error' பயன்படுத்தப்படும் தவிர தொகுதிக்கு தாவுகிறது. பிழை என்பது பதிவு செய்யும் நிலை. விதிவிலக்கு ஏற்பட்டால், “விதிவிலக்கு ஏற்பட்டது” என்று ஒரு செய்தி அல்லது அறிக்கையை அச்சிட்டு, “exc info=true” என அமைப்போம். நாம் அதை உண்மையாக அமைக்கவில்லை என்றால், அது விதிவிலக்கு தொகுதியை மட்டுமே அச்சிடுகிறது மற்றும் ட்ரேஸ்பேக் தகவலைக் காட்டாது.

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

முடிவுரை

இந்தக் கட்டுரையில், பைதான் பதிவில் ஸ்டேக்ட்ரேஸை அச்சிடும் செயல்முறையையும், ஸ்டேக் ட்ரேஸை உருவாக்க ட்ரேஸ்பேக் மாட்யூலை எவ்வாறு பயன்படுத்துவது என்பதையும் பார்த்தோம். முதல் எடுத்துக்காட்டில், ட்ரேஸ்பேக் நூலகம் இறக்குமதி செய்யப்பட்டது மற்றும் முயற்சி மற்றும் தவிர முறைகள் பயன்படுத்தப்பட்டன. குறியீடு முயற்சி பெட்டியில் எழுதப்பட்டது. விதிவிலக்கு ஏற்பட்டால், அது விரைவாக விதிவிலக்கு தொகுதிக்கு வந்து, விதிவிலக்கு அறிக்கையை திரையில் காண்பிக்கும். இரண்டாவது எடுத்துக்காட்டில், முதல் உதாரணத்தைப் போலவே பதிவு செய்தலைப் பயன்படுத்தினோம். விதிவிலக்கு() முறையானது 'தகவல்' மற்றும் 'பிழை' நிலைகளைப் பயன்படுத்துகிறது. விதிவிலக்கு ஏற்பட்டால், அது ஒரு விதிவிலக்கு அறிக்கையைக் காட்டுகிறது.