-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patherrors.go
More file actions
86 lines (69 loc) · 1.98 KB
/
errors.go
File metadata and controls
86 lines (69 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package main
import (
"errors"
"fmt"
)
// Custom error types
var (
ErrNoImagesFound = errors.New("no images found")
ErrInvalidInput = errors.New("invalid input")
)
// ImageError представляет ошибку при обработке изображения
type ImageError struct {
Path string
Reason string
}
func (e *ImageError) Error() string {
return fmt.Sprintf("image error for %q: %s", e.Path, e.Reason)
}
// InvalidExtensionError для файлов с неправильным расширением
type InvalidExtensionError struct {
Path string
Extension string
}
func (e *InvalidExtensionError) Error() string {
return fmt.Sprintf("invalid extension %q for file %q", e.Extension, e.Path)
}
// FileNotFoundError для несуществующих файлов
type FileNotFoundError struct {
Path string
}
func (e *FileNotFoundError) Error() string {
return fmt.Sprintf("file not found: %q", e.Path)
}
// DirectoryError для ошибок при работе с директориями
type DirectoryError struct {
Path string
Reason string
}
func (e *DirectoryError) Error() string {
return fmt.Sprintf("directory error for %q: %s", e.Path, e.Reason)
}
// ConversionError для ошибок при конвертации в PDF
type ConversionError struct {
Output string
Reason string
}
func (e *ConversionError) Error() string {
return fmt.Sprintf("conversion error for output %q: %s", e.Output, e.Reason)
}
// Helper функции для проверки типов ошибок
func IsNoImagesFound(err error) bool {
return errors.Is(err, ErrNoImagesFound)
}
func IsInvalidExtension(err error) bool {
var ie *InvalidExtensionError
return errors.As(err, &ie)
}
func IsFileNotFound(err error) bool {
var fe *FileNotFoundError
return errors.As(err, &fe)
}
func IsDirectoryError(err error) bool {
var de *DirectoryError
return errors.As(err, &de)
}
func IsConversionError(err error) bool {
var ce *ConversionError
return errors.As(err, &ce)
}