cpp

Преждевременное завершение выполнения программы

В некоторых случаях может возникнуть условие, при котором дальнейшее выполнение программы лишено смысла. В этом случае следует вывести сообщение об ошибке и прервать выполнение программы досрочно. Для этого предназначена функция Exit() из пакета os. Формат функции:

os.Exit(code int)

В качестве параметра функция принимает число, которое является статусом завершения. Число 0 означает нормальное завершение программы, а любое другое число в диапазоне от 1 до 125 — некорректное завершение. Эти числа передаются операционной системе. Если статус не равен 0, то дополнительно в поток выводится сообщение exit status <Код>.

Обратите внимание

В качестве примера получим число от пользователя и выведем результат. При этом обработаем ошибку ввода (листинг 1.8).

Листинг 1.8. Преждевременное завершение выполнения программы

package main

import (
   "fmt"
   "os"
)

func main() {
   x := 0
   fmt.Print("Введите число: ")
   _, err := fmt.Scanln(&x)
   if err != nil {
      fmt.Fprintln(os.Stderr, "Вы ввели не число")
      os.Exit(0) // Завершаем программу
   }
   fmt.Println("Вы ввели:", x)
}

В этом примере вместо функции Exit() можно было воспользоваться инструкцией return, так как завершение программы выполнялось внутри функции main(). Однако в больших программах основная часть кода расположена вне функции main() и в этом случае инструкцией return для завершения всей программы уже не обойтись.

Вывести сообщение и завершить выполнение программы позволяют также следующие функции из пакета log:

  • Fatal() — вызывает функцию Print(), а затем функцию os.Exit(1). Формат функции:
log.Fatal(v ...interface{})

Пример:

// import "log"
log.Fatal("Сообщение", 10, true)
// 2022/04/19 19:58:14 Сообщение10 true
// exit status 1
  • Fatalln() — вызывает функцию Println(), а затем функцию os.Exit(1). Формат функции:
log.Fatalln(v ...interface{})

Пример:

log.Fatalln("Сообщение", 10, true)
// 2022/04/19 19:59:17 Сообщение 10 true
// exit status 1
  • Fatalf() — вызывает функцию Printf(), а затем функцию os.Exit(1). Формат функции:
log.Fatalf(format string, v ...interface{})

Пример:

log.Fatalf("%s %d %v", "Сообщение", 10, true)
// 2022/04/19 20:01:55 Сообщение 10 true
// exit status 1

Перед сообщением по умолчанию выводится дата и время. Управлять этой технической информацией позволяет функция SetFlags(). Формат функции:

log.SetFlags(flag int)

Пример вывода даты, времени, пути к файлу и номера строки внутри файла:

log.SetFlags(log.Ldate | log.Ltime | log.Llongfile)
log.Fatal("Сообщение")
// 2022/04/19 20:10:50 C:/book/test/main.go:12: Сообщение
// exit status 1

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp