Како поступати са грешкама у Голангу?

Kako Postupati Sa Greskama U Golangu



Го је добро вољен програмски језик који је постао популаран због своје ефикасности, брзине и ефикасности. Међутим, грешке се могу десити током фаза развоја и извршавања, баш као и код сваког другог програмског језика. Ефикасно руковање грешкама је од суштинског значаја да би се обезбедила поузданост и стабилност ваших Го програма.

Овај чланак ће испитати неколико метода и препоручених процедура за управљање грешкама у Го.







Руковати грешкама у Голангу

У Го, можете руковати грешкама кроз доле наведене методе:



1: Нова() функција

Го језик пружа Нова() функција за управљање грешкама. Ова функција, доступна у уграђеном пакету грешака, омогућава програмерима да креирају прилагођене поруке о грешкама за своје програме. Коришћењем Нова() функција, програмери могу ефикасно да рукују грешкама и корисницима дају смислене поруке о грешкама.



пакет главни

увоз 'грешке'
увоз 'фмт'

фунц цхецк ( низ имена ) грешка {
нЕррор := грешке.Ново ( 'Погрешно име' )
ако име ! = 'Линукс' {
повратак нЕррор
}
повратак нула
}
фунц маин ( ) {
име := 'Линукс'
грешка := провери ( име )
ако ерр ! = нула {
фмт.Принтлн ( ерр )
} друго {
фмт.Принтлн ( „Важеће име“ )
}
}





Горњи код користи Нова() цхецкНаме функцију да видите да ли је стринг Линук одговара датом имену. Функција производи грешку са поруком Погрешно име ако име није Линук . Функција враћа нил да покаже да није било грешке ако је име једнако Линук .

Променљива имена је подешена на Линук у позиву главне функције за цхецкНаме функција, која такође узима променљиву наме као аргумент. Главна функција штампа поруку о грешци ако је цхецкНаме функција враћа грешку. Главна функција штампа Валид Наме ако је цхецкНаме функција враћа нулу.



Излаз

2: Функција Еррорф().

Тхе Еррорф() функција у Го-у нам омогућава да се бавимо и грешкама. Еррорф() даје нам могућност форматирања поруке о грешци. Увозом фмт пакета, програмери могу да га искористе за прилагођавање порука о грешкама које одговарају њиховим потребама. Еррорф() поједностављује и побољшава ефикасност управљања и преношења грешака у Го.

пакет главни
увоз 'фмт'

фунц див ( н1, н2 ти ) грешка {

ако н2 == 0 {
повратак фмт.Еррорф ( „%д / %д Не могу поделити број са нулом' , н1, н2 )
}
повратак нула
}
фунц маин ( ) {
ерр := див ( 42 , 0 )
ако ерр ! = нула {
фмт.Принтф ( 'грешка: %с' , ерр )
} друго {
фмт.Принтлн ( 'Важећа дивизија' )
}
}

У горњем коду, див функција прихвата два целобројна улаза, н1 и н2, и ако је н2 нула, производи грешку. Функција производи грешку са поруком која садржи вредности н1 и н2 ако је н2 нула. Функција враћа нил да покаже да није било грешке ако н2 није нула.

Грешке које див враћа се чувају у променљивој ерр када главна функција покрене див са вредностима 42 и 0. Главна функција користи фмт.Принтф да прикаже поруку о грешци ако функција див врати грешку. Главна функција се штампа Валид Дивисион ако функција див враћа нулу.

Излаз

3: Експлицитно руковање грешкама

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

пакет главни
увоз 'фмт'

фунц дивиде ( а, б флоат64 ) ( флоат64, грешка ) {
ако б == 0 {
повратак 0 , фмт.Еррорф ( 'не може поделити са нулом' )
}
повратак а / б, нула
}
фунц маин ( ) {
резултат, грешка := подели ( 13 , 3 )
ако ерр ! = нула {
фмт.Принтф ( „Грешка: %в ' , ерр )
} друго {
фмт.Принтф ( „Резултат: %ф ' , резултат )
}
резултат, грешка = подели ( 23 , 0 )
ако ерр ! = нула {
фмт.Принтф ( „Грешка: %в ' , ерр )
} друго {
фмт.Принтф ( „Резултат: %ф ' , резултат )
}
}

На овој илустрацији, функција дељења се користи за дељење две вредности. Резултат је резултат тога. Ако је други број 0, функција производи грешку са јасном поруком о грешци.

Дивиде се позива два пута у главној функцији: једном са важећим улазима и једном са неважећим уносом. Тхе, иф ерр != нула израз се користи да одреди да ли је дошло до грешке сваки пут када се користи функција дељења. Порука о грешци се штампа ако се појави. Ако није, резултат се штампа.

Излаз

4: Одлагање, паника и опоравак

Голанг такође обезбеђује одложити израз, који се користи за извршавање функције након завршетка програма или одређеног блока кода. Тхе одложити изјава се често користи у спрези са опоравити се функција за хватање и опоравак од паничних грешака током извршавања. Када дође до грешке у паници током извршавања, опоравити се функција се користи за опоравак од стања грешке и спречавање пада програма. Ово је корисно за задатке чишћења као што су затварање датотека, затварање мрежних веза или ослобађање ресурса. Одлагањем ових задатака осигуравате да се они изврше чак и ако дође до грешке.

Тхе паника се користи за заустављање нормалног извршавања програма када дође до неочекиване грешке, док опоравити се се користи за решавање панике и наставак извршавања програма.

пакет главни

увоз 'фмт'

фунц рецоверФромПаниц ( ) {
ако р := опоравити ( ) ; р ! = нула {
фмт.Принтлн ( „Опорављен од панике:“ , р )
}
}
фунц дивиде ( к,и флоат64 ) флоат64 {
одложити опоравакФромПаниц ( )

ако и == 0 {
паника ( 'не може поделити са нулом' )
}
повратак Икс / и
}
фунц маин ( ) {
фмт.Принтлн ( подела ( 13 , 3 ) )
фмт.Принтлн ( подела ( 23 , 0 ) )
}

У горњем коду, функција дивиде се користи за дељење две вредности са помичним зарезом. Резултат је резултат тога. Функција емитује прилагођену поруку о грешци ако је други број нула. Изјава дефер се користи за позивање рецоверФромПаниц функција. Тхе рецоверФромПаниц функција ће открити панику која се догодила унутар функције дељења и одштампати грешку ако се догодила.

Дивиде се позива два пута у главној функцији: једном са важећим улазима и једном са неважећим уносом. Тхе фмт.Принтлн функција штампа излаз функције сваки пут када се покрене функција дељења. Тхе рецоверФромПаниц функција ће открити панику ако се догоди и одштампати грешку ако се догоди.

Излаз

Након што је открио грешку, програм се опоравио од панике и наставио да ради. Међутим, код се успаничио и није вратио вредност при другом позиву за дељење, због чега је вратио нулу.

5: Еррор Враппинг

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

пакет главни

увоз 'грешке'
увоз 'фмт'

фунц маин ( ) {
ако ерр := бар ( ) ; ерр ! = нула {
фмт.Принтлн ( ерр )
}
}
фунц дивиде ( а, б флоат64 ) ( флоат64, грешка ) {
ако б == 0 {
повратак 0 , грешке.Ново ( 'дељење са нулом' )
}
повратак а / б, нула
}
фунц бар ( ) ( грешка грешка ) {
_, грешка = поделити ( 42 , 0 )
ако ерр ! = нула {
повратак фмт.Еррорф ( 'прорачун није успео: %в' , ерр )
}
повратак нула
}

У горњем коду, функција дељења израчунава однос два броја у овом примеру и даје грешку ако је друга вредност нула. Бар функција позива функцију дивиде и затим обавија грешку која подела враћа у новој грешци са поруком која укључује оригиналну поруку о грешци помоћу функције фмт.Еррорф. Функцију трака позива главна функција, која такође штампа све грешке које враћа.

Излаз

Закључак

Развој софтвера мора укључивати Грешка руковање , а Голанг има различите уграђене функције и методе за то грациозно. Ови механизми омогућавају програмерима да ухвате грешке и опораве се од њих, спрече рушење програма и дају информативне поруке о грешкама крајњим корисницима. Ефикасним коришћењем ових механизама за руковање грешкама, програмери могу да направе робусне, поуздане и ефикасне софтверске апликације.