ఉదాహరణ 1: ట్రేస్బ్యాక్ మాడ్యూల్ని ఉపయోగించడం ద్వారా పైథాన్లో స్టాక్ట్రేస్ని ముద్రించండి
ఈ ఉదాహరణలో, స్టాక్ ట్రేస్ను ప్రింట్ చేయడానికి పైథాన్ యొక్క ట్రేస్బ్యాక్ మాడ్యూల్ను ఎలా అమలు చేయాలో ప్రదర్శించడానికి మేము ఒక సాధారణ కోడ్ భాగాన్ని ఉపయోగిస్తాము. ఈ ట్రాక్బ్యాక్ ప్యాకేజీ కంప్యూటర్ భాషల నుండి స్టాక్ ట్రేస్లను సేకరించడం, నిల్వ చేయడం మరియు ప్రదర్శించడం కోసం బాగా ఇష్టపడే ఫీచర్ని కలిగి ఉంది. ఇది స్క్రిప్ట్ యొక్క స్టాక్ ట్రేస్ ప్రింటింగ్ కార్యకలాపాలను విశ్వసనీయంగా నకిలీ చేస్తుంది. మీరు ఎప్పుడైనా స్టాక్ ట్రేస్ని వీక్షించవలసి వస్తే, ఇది చాలా అవసరం.
మరో మాటలో చెప్పాలంటే, సమస్యకు దారితీసిన దానికంటే ముందు వచ్చిన ప్రతి ఆపరేషన్ను స్టాక్ ట్రేస్ ప్రదర్శిస్తుంది. అతి ముఖ్యమైన సమాచారం ఎల్లప్పుడూ స్టాక్ ట్రేస్ యొక్క చివరి పంక్తిలో నివేదించబడుతుంది, ఇది లోపం గుర్తించబడినప్పుడు. ఫలితంగా ఎర్రర్లోని అన్ని ఫంక్షన్ కాల్లు సమస్యను త్వరగా గుర్తించడానికి మరియు పరిష్కరించడానికి ఉపయోగించబడతాయి.
ట్రేస్బ్యాక్ పైథాన్ లైబ్రరీని దిగుమతి చేసుకోవడం ద్వారా కోడ్ని అమలు చేయడం ద్వారా ప్రారంభిద్దాం. తరువాత, కింది పంక్తిలో, మేము ఒక శ్రేణిని సృష్టించి, కొన్ని విలువలతో మూలకాలను జాబితా చేస్తాము. శ్రేణి జాబితా విలువలు “7”, “8”, “9”, మరియు “10”. శ్రేణి జాబితాలో నాలుగు విలువలు ఉన్నాయి. ఈ శ్రేణి జాబితా గతంలో ప్రారంభించబడిన వేరియబుల్ “A”లో సేవ్ చేయబడింది.
దానిని అనుసరించి, మేము క్రింది పంక్తిలో “ప్రయత్నించు” అనే పదాన్ని మరియు “A=6” విలువను ఉపయోగిస్తాము. మేము మినహాయింపులను నిర్వహించడానికి పైథాన్లోని బ్లాక్లను తప్ప ప్రయత్నించండి. బ్లాక్ హెడర్లో ఎర్రర్ను పెంచే స్క్రిప్ట్ను వ్రాయడానికి ఈ విధానం ఉపయోగించబడుతుంది. మినహాయింపులు తప్పనిసరిగా దోషాలు, సింటాక్స్ ఎర్రర్ల మాదిరిగానే ఉంటాయి. ప్రోగ్రామ్ యొక్క మినహాయింపు సమయంలో, మినహాయింపు నిర్వహణ అనేది మినహాయింపుకు ప్రతిస్పందించే ప్రత్యేక చర్య. స్క్రిప్ట్కి తిరిగి రావడం, మేము తదుపరి లైన్లో “తప్ప” ఉపయోగిస్తాము.
మినహా బ్లాక్లో, మేము 'traceback.print exc()'ని ఉపయోగిస్తాము, ఇది 'ప్రింటింగ్ మినహాయింపు'కి చిన్నది. మేము మినహాయింపు పెట్టె లోపల “ప్రింట్()” ఫంక్షన్ని ఉపయోగిస్తాము అది “ప్రోగ్రామ్ ముగింపు” కాబట్టి మినహాయింపు వచ్చినప్పుడు ఈ స్టేట్మెంట్ ప్రింట్ అవుతుంది. ఇప్పుడు, ట్రై బాక్స్లో మినహాయింపు ఏర్పడితే, ప్రోగ్రామ్ తక్షణమే బ్లాక్లను మినహాయించి కొనసాగుతుంది. మినహాయింపు జరగకపోతే, మినహాయింపు బ్లాక్ పూర్తిగా దాటవేయబడుతుంది. ఇప్పుడు మినహాయింపు జరిగినందున, శ్రేణి జాబితాలో లేనప్పటికీ “6” విలువ ట్రై బాక్స్లో నమోదు చేయబడిందని మనం కోడ్లో చూడవచ్చు. ఫలితంగా, కోడ్ వెంటనే మినహాయింపు పెట్టెకి వెళ్లి అవుట్పుట్ డిస్ప్లేలో “ప్రోగ్రామ్ ఎండ్స్” స్టేట్మెంట్ను ప్రింట్ చేస్తుంది.
ట్రేస్బ్యాక్ను రూపొందించే విభిన్న ఫంక్షన్ కాల్లు అత్యంత ఇటీవలి నుండి అతి తక్కువ ఇటీవలి వరకు, దిగువ నుండి పైకి ఆర్డర్ చేయబడతాయి. ఈ కార్యకలాపాలన్నీ రెండు-లైన్ స్టేట్మెంట్ల ద్వారా సూచించబడతాయి. ప్రతి కాల్ ఫైల్ పేరు, సీక్వెన్స్ నంబర్ మరియు మాడ్యూల్ పేరుతో ప్రారంభమవుతుంది, ఇవన్నీ కోడ్ స్థానాన్ని సూచిస్తాయి. ఆ తర్వాత, '6' విలువ డిక్లేర్డ్ జాబితాలో లేనందున 'ప్రోగ్రామ్ ఎండ్' అనే మినహాయింపు ప్రింట్ స్టేట్మెంట్ను ప్రదర్శిస్తుంది, దీని ఫలితంగా 'జాబితా సూచిక పరిధి వెలుపల' అవుట్పుట్ అవుతుంది.
ఉదాహరణ 2: లాగింగ్.ఎక్సెప్షన్() పద్ధతిని ఉపయోగించడం ద్వారా పైథాన్లో స్టాక్ట్రేస్ని ముద్రించండి
ఈ ఉదాహరణలో, స్టాక్ట్రేస్ను అవుట్పుట్ చేయడానికి పైథాన్ యొక్క “logging.exception()” పద్ధతిని ఎలా ఉపయోగించాలో మేము ప్రదర్శిస్తాము. పైథాన్లోని లాగింగ్ ప్యాకేజీ లోపాలను లాగిన్ చేయడానికి అలాగే లోపాలు మరియు మినహాయింపులను రికార్డ్ చేయడానికి అనుమతిస్తుంది. లాగింగ్ మాడ్యూల్లు మాకు “డీబగ్”, “సమాచారం”, “హెచ్చరిక”, “ఎర్రర్” మరియు “క్రిటికల్” వంటి లాగింగ్ మాడ్యూల్ల ఎంపికను అందిస్తాయి. ఇవి తప్పనిసరిగా లాగింగ్ మాడ్యూల్స్ యొక్క పొరలు, సులభంగా చెప్పాలంటే. పైథాన్లో లోపంతో మినహాయింపును లాగిన్ చేయడానికి, “logging.exception()” ఫంక్షన్ని ఉపయోగించండి. ఈ ఫంక్షన్ ERROR స్థితితో కూడిన నివేదికను ఈ లాగర్కు జోడిస్తుంది. పారామితులు డీబగ్గింగ్ కోసం అని నమ్ముతారు. మినహాయింపు గురించిన సమాచారం లాగింగ్ నివేదికకు జోడించబడింది. ఈ విధానాన్ని అమలు చేసే ఏకైక స్థానం మినహాయింపు హ్యాండ్లర్లు మాత్రమే.
ఇప్పుడు, కోడ్ చూద్దాం. మొదట, మేము రెండు లైబ్రరీలను దిగుమతి చేస్తాము - వీటిలో మొదటిది లాగింగ్ మరియు రెండవది ట్రేస్బ్యాక్. అప్పుడు, మేము 'లాగింగ్' తో 'basicConfig' పద్ధతిని ఉపయోగిస్తాము మరియు స్థాయిని 'logging.Debug'గా పేర్కొంటాము. 'getLogger()' పద్ధతి తీసుకునే ఏకైక వాదన 'పేరు'. అందువలన, 'logging.getlogger' ఫంక్షన్ని ఉపయోగిస్తున్నప్పుడు మేము దానిని ఉపయోగిస్తాము. ఒక పేరు ఇవ్వబడినట్లయితే, ఆ పేరుతో లాగర్ ఉదాహరణకి సూచన రూపొందించబడుతుంది; లేకపోతే, రూట్ తిరిగి ఇవ్వబడుతుంది. ఒకే లాగర్ ఆబ్జెక్ట్ ఒకే గుర్తింపుతో అనేక getLogger() ఆపరేషన్ల ద్వారా సూచించబడుతుంది.
అప్పుడు, మేము ప్రయత్నిస్తాము మరియు ట్రై బ్లాక్లో మనకు తెలిసినట్లుగా, మినహాయింపును పెంచే కోడ్ను వ్రాస్తాము. ఈ సందర్భంలో, మేము 'myfunction()'ని ఉపయోగిస్తాము. ఇచ్చిన పరిస్థితి సరిపోలకపోతే, మినహాయింపు ఏర్పడుతుంది. అప్పుడు, కోడ్ తక్షణమే తప్ప బ్లాక్కి దూకుతుంది. ఈ మినహాయింపు బ్లాగ్లో, మేము “logging.info”ని ఉపయోగిస్తాము. దాని లోపల, మనం ప్రింట్ చేయాలనుకుంటున్న సందేశాన్ని “మినహాయింపు జరిగింది” అని వ్రాస్తాము. ఎందుకంటే మినహాయింపు జరిగితే, లోపం సంభవించినట్లయితే, అది స్క్రీన్పై ఈ సందేశాన్ని ప్రదర్శిస్తుంది. కానీ లోపం సంభవించకపోతే, ఇది మొత్తం మినహాయింపు సందేశాన్ని విస్మరిస్తుంది.
మేము సందేశంతో “exc info=True”ని కూడా సెట్ చేసాము. “logger.exception()”తో ఏమి జరుగుతుందో అదే విధంగా exc సమాచారాన్ని ఒప్పుకు సెట్ చేసినప్పుడు మొత్తం స్టాక్ట్రేస్ లాగింగ్లో చేర్చబడుతుంది. ఏకైక వ్యత్యాసం ఏమిటంటే, మీరు లాగర్ను మార్చుకోవడం ద్వారా లాగ్ స్థాయిని లోపం నుండి వేరొకదానికి త్వరగా మార్చవచ్చు.
ఇప్పుడు స్క్రిప్ట్లో మినహాయింపు ఏర్పడింది, అవుట్పుట్ యొక్క మొదటి పంక్తి “మినహాయింపు జరిగింది” సందేశం తర్వాత స్క్రిప్ట్లో ఉపయోగించిన లాగింగ్ స్థాయి “సమాచారం”. లాగర్ పేరు ఈ సందర్భంలో రూట్గా కనిపిస్తుంది. అప్పుడు, మాడ్యూల్, లైన్ మరియు ఫైల్ పేర్లను ప్రదర్శిస్తూ ట్రేస్బ్యాక్ కాల్ చూపబడుతుంది. చివరగా, దోష సందేశం 'myfunction' నిర్వచించబడలేదు.
లాగింగ్ని ఉపయోగించే మరికొన్ని కోడ్ గురించి మాట్లాడుకుందాం. లాగింగ్ కోసం లైబ్రరీని దిగుమతి చేయడం ద్వారా మినహాయింపు() పద్ధతి ప్రారంభమవుతుంది. తరువాత, రెండు వేరియబుల్స్ - 'm' మరియు 'n' - ప్రారంభించబడ్డాయి మరియు వరుసగా '7' మరియు '0' విలువలు ఇవ్వబడ్డాయి. ప్రయత్నించండి బ్లాక్ ఇప్పుడు తదుపరి దశలో ఉపయోగించబడుతుంది. దానిలో, మేము మినహాయింపుకు కారణమయ్యే కోడ్ను వ్రాస్తాము. మొదట, మేము వేరియబుల్ 'o' ను ప్రకటిస్తాము. అప్పుడు, మేము ఆ 'm'ని 'n'తో విభజించాము. ఇది మినహాయింపును కలిగిస్తుంది ఎందుకంటే హారం సున్నా మరియు మేము ఏ సంఖ్యను సున్నాతో భాగించలేము, అంటే లోపాలు తలెత్తుతాయి. ఫలితంగా, కోడ్ 'logging.error' ఉపయోగించబడే మినహా బ్లాక్కి జంప్ అవుతుంది. ఎర్రర్ అనేది లాగింగ్ స్థాయి. మినహాయింపు సంభవించినట్లయితే, మేము 'మినహాయింపు సంభవించింది' అని చెప్పే సందేశాన్ని లేదా స్టేట్మెంట్ను ప్రింట్ చేసి, మేము 'exc info=true'ని సెట్ చేస్తాము. మేము దీన్ని ఒప్పుకు సెట్ చేయకుంటే, ఇది మినహాయింపు బ్లాక్ను మాత్రమే ప్రింట్ చేస్తుంది మరియు ట్రేస్బ్యాక్ సమాచారాన్ని ప్రదర్శించదు.
మేము మా స్క్రిప్ట్లో “ఎర్రర్” స్థాయిని ఎంచుకున్నందున, ఇది మొదట రూట్ను లాగర్ పేరుగా ప్రదర్శిస్తుంది, తర్వాత “మినహాయింపు సంభవించింది” సందేశం. ఫైల్ పేరు, లైన్ నంబర్ మరియు మాడ్యూల్తో కూడిన ట్రేస్బ్యాక్ సమాచారం చూపబడుతుంది. హారం సున్నా కానందున తదుపరి పంక్తి లోపం నోటీసును చూపుతుంది. మరియు ఈ కోడ్లో హారం సున్నా అయినందున, లోపం సున్నా-డివైజర్ లోపంగా సూచించబడుతుంది.
ముగింపు
ఈ కథనంలో, మేము పైథాన్ లాగ్లో స్టాక్ట్రేస్ను ముద్రించే ప్రక్రియను అలాగే స్టాక్ ట్రేస్ను సృష్టించడానికి ట్రేస్బ్యాక్ మాడ్యూల్ను ఎలా ఉపయోగించాలో పరిశీలించాము. మొదటి ఉదాహరణలో, ట్రేస్బ్యాక్ లైబ్రరీ దిగుమతి చేయబడింది మరియు ప్రయత్నించండి మరియు మినహాయించే పద్ధతులు ఉపయోగించబడ్డాయి. కోడ్ ట్రై బాక్స్లో వ్రాయబడింది. మినహాయింపు సంభవించినట్లయితే, అది మినహాయింపు బ్లాక్కి వేగంగా దూసుకుపోతుంది మరియు స్క్రీన్పై మినహాయింపు ప్రకటనను ప్రదర్శిస్తుంది. రెండవ ఉదాహరణలో, మేము మొదటి ఉదాహరణకి సమానమైన లాగింగ్ని ఉపయోగించాము. మినహాయింపు() పద్ధతి లాగింగ్ యొక్క 'సమాచారం' మరియు 'లోపం' స్థాయిలను ఉపయోగిస్తుంది. మినహాయింపు సంభవించినట్లయితే, అది మినహాయింపు ప్రకటనను ప్రదర్శిస్తుంది.