Го је добро вољен програмски језик који је постао популаран због своје ефикасности, брзине и ефикасности. Међутим, грешке се могу десити током фаза развоја и извршавања, баш као и код сваког другог програмског језика. Ефикасно руковање грешкама је од суштинског значаја да би се обезбедила поузданост и стабилност ваших Го програма.
Овај чланак ће испитати неколико метода и препоручених процедура за управљање грешкама у Го.
Руковати грешкама у Голангу
У Го, можете руковати грешкама кроз доле наведене методе:
- Нова() функција
- Функција Еррорф().
- Експлицитно руковање грешкама
- Одложите, паничите и опоравите се
- Еррор Враппинг
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 )
ако ерр ! = нула {
повратак фмт.Еррорф ( 'прорачун није успео: %в' , ерр )
}
повратак нула
}
У горњем коду, функција дељења израчунава однос два броја у овом примеру и даје грешку ако је друга вредност нула. Бар функција позива функцију дивиде и затим обавија грешку која подела враћа у новој грешци са поруком која укључује оригиналну поруку о грешци помоћу функције фмт.Еррорф. Функцију трака позива главна функција, која такође штампа све грешке које враћа.
Излаз
Закључак
Развој софтвера мора укључивати Грешка руковање , а Голанг има различите уграђене функције и методе за то грациозно. Ови механизми омогућавају програмерима да ухвате грешке и опораве се од њих, спрече рушење програма и дају информативне поруке о грешкама крајњим корисницима. Ефикасним коришћењем ових механизама за руковање грешкама, програмери могу да направе робусне, поуздане и ефикасне софтверске апликације.