English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Go non ha un meccanismo di eccezione come try / catch in Java, non possiamo lanciare eccezioni in Go.
Go utilizza un altro meccanismo chiamatoMecanismo di panico ritardato e recupero
Go gestisce gli errori semplici delle funzioni e dei metodi restituendo un oggetto di errore. L'oggetto di errore può essere l'unico o l'ultimo valore di ritorno. Se la funzione non ha errori, l'oggetto di errore è nil.
Che sia ricevuto o meno un errore, dobbiamo sempre controllare l'errore nella chiamata.
Non dobbiamo mai ignorare gli errori, poiché possono causare il crash del programma.
Il metodo di rilevamento e segnalazione degli errori del linguaggio Go è
Le funzioni che possono causare errori restituiranno due variabili: un valore e un codice di errore, se con successo, nil; se si verifica una condizione di errore, allora == nil.
Controlliamo l'errore dopo la chiamata di funzione. Se si verifica un errore (if error != nil), fermiamo l'esecuzione della funzione reale (o l'intero programma se necessario).
Go ha un tipo di interfaccia di errore predefinito
type error interface { Error() string }
Possiamo utilizzare la funzione error.New del pacchetto error per definire il tipo di errore e fornire un messaggio di errore appropriato, ad esempio:
err := errors.New("math - 负数的平方根")
package main import "errors" import "fmt" import "math" func Sqrt(value float64) (float64, error) { if (value < 0) { return 0, errors.New("Math: 负数的平方根") } return math.Sqrt(value), nil } func main() { result, err := Sqrt(-64) if err != nil { fmt.Println(err) } else { fmt.Println(result) } result, err = Sqrt(64) if err != nil { fmt.Println(err) } else { fmt.Println(result) } }
Output:
Math: Negative square root 8