РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1434 of 1593 menu

Тип exec.Error

Тип exec.Error представляет ошибки, возникающие при работе с внешними командами. Он используется в пакете os/exec для описания ситуаций, когда команда не может быть запущена или завершается с ошибкой. Тип содержит информацию о команде и причине ошибки.

Структура типа

type Error struct { Name string Err error }

Поле Name содержит имя команды, а поле Err содержит ошибку, которая произошла при её выполнении.

Метод Error

func (e *Error) Error() string

Метод Error возвращает строковое представление ошибки, объединяя имя команды и описание ошибки в единое сообщение.

Пример использования

Давайте попробуем выполнить несуществующую команду и обработаем ошибку:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("unknown_command") err := cmd.Run() if err != nil { if execErr, ok := err.(*exec.Error); ok { fmt.Println("Command:", execErr.Name) fmt.Println("Error:", execErr.Err) fmt.Println("Full error:", execErr.Error()) } } }

Результат выполнения кода:

"Command: unknown_command" "Error: exec: \"unknown_command\": executable file not found in $PATH" "Full error: exec: \"unknown_command\": executable file not found in $PATH"

Пример с неверным путем

Давайте попробуем выполнить команду с неверным путем к исполняемому файлу:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("/invalid/path/command") err := cmd.Run() if err != nil { if execErr, ok := err.(*exec.Error); ok { fmt.Println("Command:", execErr.Name) fmt.Println("Error:", execErr.Err) } } }

Результат выполнения кода:

"Command: /invalid/path/command" "Error: exec: \"/invalid/path/command\": no such file or directory"

Пример с проверкой типа ошибки

Давайте обработаем ошибку выполнения команды с использованием проверки типа:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("ls", "-invalid-flag") err := cmd.Run() if err != nil { switch e := err.(type) { case *exec.Error: fmt.Println("Exec error:", e.Error()) case *exec.ExitError: fmt.Println("Exit error:", e.Error()) default: fmt.Println("Other error:", err) } } }

Результат выполнения кода:

"Exit error: exit status 1"

Смотрите также

  • тип exec.Cmd,
    который представляет выполняемую команду
  • тип exec.ExitError,
    который представляет ошибку завершения команды с ненулевым кодом
  • функцию exec.Command,
    которая создает команду для выполнения
  • функцию exec.LookPath,
    которая ищет исполняемый файл в системном пути
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить