Тип 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,
которая ищет исполняемый файл в системном пути