Тип fs.PathError
Тип fs.PathError реализует интерфейс error и используется для
представления ошибок, возникающих при работе с файловой системой.
Он содержит три поля: Op (название операции), Path (путь к файлу)
и Err (основная ошибка). Этот тип позволяет разработчикам
получать детальную информацию о том, какая операция и с каким путем
вызвала ошибку.
Синтаксис
type PathError struct {
Op string
Path string
Err error
}
Для создания ошибки используется функция fs.PathError, которая
принимает три параметра: операцию (строка), путь (строка) и
основную ошибку (интерфейс error).
Пример
Давайте создадим ошибку пути и выведем её содержимое:
package main
import (
"fmt"
"io/fs"
"os"
)
func main() {
err := &fs.PathError{
Op: "open",
Path: "/nonexistent/file.txt",
Err: os.ErrNotExist,
}
fmt.Println(err)
}
Результат выполнения кода:
"open /nonexistent/file.txt: file does not exist"
Пример
Проверим, является ли ошибка типом fs.PathError и получим
её поля:
package 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)
}
}
}
Результат выполнения кода:
"Operation: open"
"Path: /nonexistent/file.txt"
"Error: file does not exist"
Пример
Проверим, является ли ошибка ошибкой "файл не существует"
с использованием метода errors.Is:
package 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")
}
}
}
Результат выполнения кода:
"File does not exist"
Смотрите также
-
функцию
os.Open,
которая открывает файл для чтения -
функцию
os.Stat,
которая возвращает информацию о файле -
функцию
os.IsNotExist,
которая проверяет ошибку на существование файла -
функцию
os.IsPermission,
которая проверяет ошибку на отсутствие прав доступа