Il miglior tutorial Vai gestione degli errori Nel 2024, in questo tutorial puoi imparare Vai gestione degli errori
Vai lingua fornisce un meccanismo molto semplice la gestione degli errori tramite interfaccia errore built-in.
tipo di errore è un tipo di interfaccia, che è la sua definizione:
type error interface { Error() string }
Possiamo implementare errore tipo di interfaccia per generare un messaggio di errore nel codice.
Funzione restituisce in genere un messaggio di errore al fine del valore di ritorno. Utilizzare errors.New restituisce un messaggio di errore:
func Sqrt(f float64) (float64, error) { if f < 0 { return 0, errors.New("math: square root of negative number") } // 实现 }
Nel seguente esempio, che noi chiamiamo la Sqrt quando passa un numero negativo, allora si ottiene l'oggetto di errore è non nullo, a fronte di questo oggetto nullo, il risultato è vero, così fmt.Println (pacchetto fmt quando la gestione degli errori errore verrà chiamato il metodo) viene chiamato per errore in uscita, vedi chiama il seguente codice di esempio:
result, err:= Sqrt(-1) if err != nil { fmt.Println(err) }
package main import ( "fmt" ) // 定义一个 DivideError 结构 type DivideError struct { dividee int divider int } // 实现 `error` 接口 func (de *DivideError) Error() string { strFormat := ` Cannot proceed, the divider is zero. dividee: %d divider: 0 ` return fmt.Sprintf(strFormat, de.dividee) } // 定义 `int` 类型除法运算的函数 func Divide(varDividee int, varDivider int) (result int, errorMsg string) { if varDivider == 0 { dData := DivideError{ dividee: varDividee, divider: varDivider, } errorMsg = dData.Error() return } else { return varDividee / varDivider, "" } } func main() { // 正常情况 if result, errorMsg := Divide(100, 10); errorMsg == "" { fmt.Println("100/10 = ", result) } // 当被除数为零的时候会返回错误信息 if _, errorMsg := Divide(100, 0); errorMsg != "" { fmt.Println("errorMsg is: ", errorMsg) } }
Il programma precedente, l'uscita è:
100/10 = 10 errorMsg is: Cannot proceed, the divider is zero. dividee: 100 divider: 0