Тип fs.PathError

Тип fs.PathError реализует интерфейс error и используется для представления ошибок, возникающих при работе с файловой системой. Он содержит три поля: Op (название операции), Path (путь к файлу) и Err (основная ошибка). Этот тип позволяет разработчикам получать детальную информацию о том, какая операция и с каким путем вызвала ошибку.

Синтаксис

gotype PathError struct {
  Op   string
  Path string
  Err  error
}

Для создания ошибки используется функция fs.PathError, которая принимает три параметра: операцию (строка), путь (строка) и основную ошибку (интерфейс error).

Пример

Давайте создадим ошибку пути и выведем её содержимое:

gopackage main

import (
  "fmt"
  "io/fs"
  "os"
)

func main() {
  err := &fs.PathError{
    Op:   "open",
    Path: "/nonexistent/file.txt",
    Err:  os.ErrNotExist,
  }
  fmt.Println(err)
}

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

go"open /nonexistent/file.txt: file does not exist"

Пример

Проверим, является ли ошибка типом fs.PathError и получим её поля:

gopackage main

import (
  "fmt"
  "io/fs"
  "os"
)

func main() {
  _, err := os.Open("/nonexistent/file.txt")
  if err != nil {
    if pathErr, ok := err.(*fs.PathError); ok {
      fmt.Printf("Operation: %s\n", pathErr.Op)
      fmt.Printf("Path: %s\n", pathErr.Path)
      fmt.Printf("Error: %v\n", pathErr.Err)
    }
  }
}

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

go"Operation: open"
"Path: /nonexistent/file.txt"
"Error: file does not exist"

Пример

Проверим, является ли ошибка ошибкой "файл не существует" с использованием метода errors.Is:

gopackage main

import (
  "errors"
  "fmt"
  "os"
)

func main() {
  _, err := os.Open("/nonexistent/file.txt")
  if err != nil {
    if errors.Is(err, os.ErrNotExist) {
      fmt.Println("File does not exist")
    }
  }
}

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

go"File does not exist"

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

  • функцию os.Open,
    которая открывает файл для чтения
  • функцию os.Stat,
    которая возвращает информацию о файле
  • функцию os.IsNotExist,
    которая проверяет ошибку на существование файла
  • функцию os.IsPermission,
    которая проверяет ошибку на отсутствие прав доступа