Junior — Middle
Ποια είναι τα αναμενόμενα αποτελέσματα εάν προκληθεί πανικός στη goroutine;
sobes.tech AI
Απάντηση από AI
Αν προκύψει πανικός (panic) σε μια goroutine, η εκτέλεση αυτής της goroutine διακόπτεται και ξεκινά η διαδικασία αποσυμπίεσης της στοίβας (stack unwinding), κατά την οποία καλούνται οι καθυστερημένες συναρτήσεις (defer).
Εάν ο πανικός δεν αντιμετωπιστεί (για παράδειγμα, με recover σε μια καθυστερημένη συνάρτηση), θα οδηγήσει στο τερματισμό ολόκληρου του προγράμματος.
Είναι σημαντικό να κατανοήσετε ότι ένας πανικός σε μια goroutine δεν επηρεάζει άμεσα άλλες goroutines — αυτές συνεχίζουν να λειτουργούν, εκτός αν ο πανικός οδηγήσει στη διακοπή ολόκληρου του προγράμματος.
Παράδειγμα διαχείρισης πανικού:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Πανικός ανιχνεύθηκε και διαχειρίστηκε:", r)
}
}()
panic("κάτι πήγε στραβά")
}()