Одштампајте Стацктраце у Пихтон Логу

Odstampajte Stacktrace U Pihton Logu



Колекција позива приступа у одређеном тренутку је представљена у стацктраце. Када програм покрене изузетак, Питхон генерише стацктраце, такође познат као повратни траг или повратак. Постоји низ детаља у овом трагу стека који се могу искористити за лоцирање проблема. Питхон пакет за евидентирање долази са неколико основних функција и има више нивоа евидентирања укључујући „дебуг“, „инфо“, „варнинг“, „еррор“ и „цритицал“.

Пример 1: Штампајте Стацктраце у Питхон-у коришћењем модула Трацебацк

У овом примеру користићемо једноставан део кода да покажемо како да имплементирамо Питхон-ов модул праћења за штампање праћења стека. Овај пакет повратних информација укључује веома омиљену функцију за прикупљање, складиштење и излагање трагова стека из рачунарских језика. Верно дуплира операције штампања трагова стека скрипте. Ако вам икада затреба да видите праћење стека, то је неопходно.

Другим речима, праћење стека приказује сваку операцију која је претходила операцији која је довела до проблема. Најважније информације се увек извештавају у последњој линији трага стека, када је грешка идентификована. Сви позиви функција у насталој грешци могу се користити за брзо лоцирање и решавање проблема.







Почнимо са имплементацијом кода кроз увоз Питхон библиотеке за праћење. Затим, у следећем реду, креирамо низ и наводимо елементе са неким вредностима. Вредности листе низа су „7“, „8“, „9“ и „10“. Постоје четири вредности у листи низа. Ова листа низова је сачувана у претходно иницијализованој променљивој „А“.



Након тога, користимо израз „покушај“ и вредност „А=6“ у следећем реду. Користимо блокове три-екцепт у Питхон-у за управљање изузецима. Овај приступ се користи за писање скрипте која може да изазове грешку у заглављу блока. Изузеци су у суштини грешке, сличне синтаксичким грешкама. Током изузетка програма, руковање изузетком је јединствени чин реаговања на изузетак. Враћајући се на скрипту, користимо „осим“ у следећем реду.



У блоку осим, ​​користимо „трацебацк.принт екц()“ што је скраћеница од „изузетак за штампање“. Користимо функцију „принт()“ унутар оквира за изузетак који је „крај програма“ тако да се ова изјава штампа када се појави изузетак. Сада, ако дође до изузетка у пољу за покушај, програм се одмах помера на блокове осим и наставља. Ако се изузетак не догоди, блок изузетка се у потпуности прескаче. Сада када се десио изузетак, можемо видети у коду да је вредност „6“ унета у поље за покушај иако се не налази на листи низа. Као резултат тога, код одмах одлази у оквир за изузетак и штампа наредбу „програм ендинг“ на излазном екрану.





Различити позиви функција који чине повратак праћења су поређани од најновијег до најмањег, од дна ка врху. Све ове операције су представљене наредбама у два реда. Сваки позив почиње именом датотеке, редним бројем и именом модула, што све указује на локацију кода. Након тога, приказује израз за штампање изузетка „програм енд“ пошто вредност „6“ није била на декларисаној листи, што доводи до излаза „индекс листе ван опсега“.



Пример 2: Одштампајте Стацктраце у Питхон-у коришћењем методе Логгинг.Екцептион()

У овом примеру ћемо показати како да користите Пајтонов метод „логгинг.екцептион()“ за излаз стацктраце-а. Пакет за евидентирање у Питхон-у нам омогућава да евидентирамо грешке, као и да евидентирамо грешке и изузетке. Модули за евидентирање нам дају избор модула за евидентирање укључујући „отклањање грешака“, „информације“, „упозорење“, „грешка“ и „критично“. То су у суштини слојеви модула за евидентирање, поједностављено речено. Да бисте евидентирали изузетак са грешком у Питхон-у, користите функцију „логгинг.екцептион()“. Ова функција овом логеру додаје извештај са статусом ЕРРОР. Верује се да су параметри за отклањање грешака. Информација о изузетку је приложена извештају о евидентирању. Једина локација са које се позива ова процедура треба да буду руковаоци изузетака.

Сада, погледајмо код. Прво, увозимо две библиотеке – од којих је прва евидентирање, а друга праћење. Затим користимо метод “басицЦонфиг” са “логгинг” и специфицирамо ниво као “логгинг.Дебуг”. Једини аргумент који метод „гетЛоггер()” узима је „име”. Стога га користимо када користимо функцију „логгинг.гетлоггер“. Ако је дато име, генерише се референца на инстанцу дневника са тим именом; у супротном, корен се враћа. Исти објекат дневника се позива на многе гетЛоггер() операције са истим идентитетом.

Затим, користимо да покушамо, а као што знамо у блоку три, пишемо код који може изазвати изузетак. У овом случају користимо „мифунцтион()“. Ако се дата ситуација не поклапа, долази до изузетка. Затим, код одмах скаче на блок осим. У овом блогу о изузетцима користимо „логгинг.инфо“. Унутар њега пишемо поруку коју желимо да одштампамо која је „изузетак се десио“. То је зато што ако се догоди изузетак, једноставно се појави грешка, а онда се ова порука приказује на екрану. Али ако се грешка не догоди, игнорише целу поруку о изузетку.

Такође смо поставили „екц инфо=Труе“ са поруком. Цео стацктраце ће бити укључен у евиденцију када се екц инфо постави на Тачно, слично ономе што се дешава са „логгер.екцептион()“. Једина разлика је у томе што можете брзо пребацити ниво евиденције са грешке на нешто друго тако што ћете једноставно заменити логер.

Сада када се у скрипти догодио изузетак, први ред излаза је порука „изузетак се догодио“, а затим следи ниво евидентирања који је коришћен у скрипти, а то је „инфо“. Име дневника се у овом случају појављује као корен. Затим се појављује повратни позив, који приказује називе модула, линија и датотека. Коначно, порука о грешци „моја функција“ није дефинисана.

Хајде да разговарамо о још неком коду који користи евидентирање. Метода изузетка() почиње увозом библиотеке за евидентирање. Затим, две променљиве – „м“ и „н“ – се иницијализују и добијају вредности „7“ и „0“, респективно. Блок покушаја се сада користи у следећем кораку. Унутар њега пишемо код који би могао да изазове изузетак. Прво, декларишемо променљиву 'о'. Затим постављамо да „м“ подељено са „н“. Ово изазива изузетак јер је именилац нула и не можемо ниједан број поделити са нулом, што значи да ће се појавити грешке. Као резултат, код скаче на блок осим где се користи „логгинг.еррор“. Грешка је ниво евидентирања. Ако дође до изузетка, штампамо поруку или изјаву која каже „дошло је до изузетка“ и постављамо „екц инфо=труе“. Ако га не поставимо на труе, он само штампа блок изузетка и не приказује информације о повратном трагу.

Пошто смо у нашој скрипти изабрали ниво „ГРЕШКА“, он прво приказује корен као име бележника, а затим поруку „дошло је до изузетка“. Затим се приказују информације о праћењу које су укључивале име датотеке, број линије и модул. Следећи ред тада приказује обавештење о грешци пошто именилац не може бити нула. А пошто је именилац нула у овом коду, грешка се назива грешка делиоца нуле.

Закључак

У овом чланку смо погледали процес штампања стацктраце-а у Питхон дневнику, као и начин коришћења модула за праћење стека за креирање праћења стека. У првом примеру је увезена библиотека праћења и коришћене су методе три и осим. Код је написан у пољу за покушај. Ако дође до изузетка, он брзо скаче на блок изузетка и приказује изјаву о изузетку на екрану. У другом примеру смо користили евиденцију која је слична првом примеру. Метода изузетка() користи нивое евидентирања „информација“ и „грешка“. Ако дође до изузетка, он приказује изјаву о изузетку.