By convention, errors have type error, a simple built-in interface.
type error interface {
Error() string
}
Usage
Basically as a part return from function
package main
import (
"errors"
"fmt"
)
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Result:", result)
}
Error vs. Panic
- Error: Recoverable
- Panic: Not Recoverable, exit and triggers
defer
, can be caught byrecover
An example of panic
package main
import "fmt"
func main() {
defer fmt.Println("First defer")
defer fmt.Println("Second defer")
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered:", r)
}
}()
panic("Something bad happened")
fmt.Println("This line will not be executed")
}
网友评论