Junior — Middle
Чӣ гуна идоракунии истисноҳо ва хатоҳо дар барномаатон анҷом дода мешавад?
sobes.tech AI
Ҷавоб аз AI
Дар Го, идоракунии хатоҳо аз бисёре дигар забонҳо фарқ мекунад, зеро дар он ҷо истисноҳо дар маънои анъанавӣ вуҷуд надоранд. Ба ҷои ин, функсияҳо одатан арзиши хато (error) ҳамчун натиҷаи дуввум бармегардонанд.
Равишҳои асосӣ:
-
Таҳқиқи хато пас аз фароидани функсия:
result, err := someFunction() if err != nil { // коркарди хато log.Println("Хатогӣ:", err) return err } // идома бо result -
Эҷоди намудҳои хати худ бо истифодаи
errors.Newёfmt.Errorfбарои паёмҳои бештар иттилоотӣ. -
Паник (
panic) ва барқароркунӣ (recover) кам истифода мешаванд, асосан барои хатоҳои критикӣ, ки дар ҷараёни оддӣ набояд рӯй диҳанд. -
Логгирии хатоҳо ва баргардонидани онҳо ба боло дар стек барои коркарди марказӣ.
Маслиҳат барои коркарди хато:
package main
import (
"errors"
"fmt"
)
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("бўш кардани ба сифр")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Хатогӣ:", err)
return
}
fmt.Println("Натиҷа:", result)
}
Тавре ки мебинем, дар Go хатоҳо ба таври ошкоро идора мешаванд, ки ин хондан ва эътимоднокии кодиҳоро баланд мебардорад.