error.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func divide(a int, b int) (int, error) {
  6. // return a / b, nil
  7. if b == 0 {
  8. panic("division by zero!")
  9. }
  10. return a / b, nil
  11. }
  12. func test(a int8) {
  13. if a == 0 {
  14. panic("a = 0; ")
  15. }
  16. }
  17. func saveData() {
  18. fmt.Print("Сохраняем данные; ")
  19. // ..
  20. }
  21. func main() {
  22. /*
  23. Если defer находится выше panic, то сначала
  24. выполнится defer, а потом паника. Однако, если defer назодится
  25. ниже panic, то defer не выполнится вовсе.
  26. */
  27. defer saveData()
  28. fmt.Print("Программа работае; ")
  29. test(0)
  30. /*
  31. var input int
  32. _, err := fmt.Scan(&input)
  33. if err != nil {
  34. fmt.Println("Проверьте типы входных параметров.")
  35. } else {
  36. fmt.Println(divide(input, 5))
  37. }
  38. */
  39. /*
  40. err := errors.New("my error")
  41. fmt.Println("", err)
  42. */
  43. /*
  44. var a, b int
  45. fmt.Scan(&a, &b)
  46. res, err := divide(a, b)
  47. if err != nil {
  48. fmt.Println("ошибка")
  49. } else {
  50. fmt.Println(res)
  51. }
  52. */
  53. }