English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O Go não tem como o Java o try / catch那样的异常机制,我们不能在Go中抛出异常。
O Go usa outro mecanismo, chamadoMecanismo de pânico adiado e recuperação.
O Go lida com erros simples em funções e métodos retornando um objeto de erro. O objeto de erro pode ser o único ou o último valor de retorno. Se não houver erro na função, o objeto de erro é nil.
Seja qual for o resultado, sempre verifique o erro na chamada.
Nunca ignoremos os erros, pois eles podem causar falhas no programa.
O método que o Go usa para detectar e relatar situações de erro é
Funções que podem gerar erros retornarão dois valores: um valor e um código de erro, se bem-sucedido, nil; se houver uma condição de erro, então == nil.
Verifique o erro após a chamada de função. Se ocorrer um erro (if error != nil), pare a execução da função real (ou todo o programa, se necessário).
O Go possui um tipo de interface de erro pré-definido
type error interface { Error() string }
Podemos usar a função error.New do pacote de erros para definir tipos de erros e fornecer mensagens de erro apropriadas, por exemplo:
err := errors.New("math - raiz quadrada de número negativo")
package main import "errors" import "fmt" import "math" func Sqrt(value float64) (float64, error) { if (value < 0) { return 0, errors.New("Math: raiz quadrada de número negativo") } 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) } }
Saída:
Math: raiz quadrada de número negativo 8