Исходники и презентации
This commit is contained in:
36
lessons/errors/error_behavior/main.go
Normal file
36
lessons/errors/error_behavior/main.go
Normal file
@ -0,0 +1,36 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type ErrorFromAnotherPackage struct{}
|
||||
|
||||
func (e ErrorFromAnotherPackage) Error() string {
|
||||
return "error"
|
||||
}
|
||||
|
||||
func (e ErrorFromAnotherPackage) Path() string {
|
||||
return "path"
|
||||
}
|
||||
|
||||
type FSError interface {
|
||||
Path() string
|
||||
}
|
||||
|
||||
func IsFSError(err error) bool {
|
||||
_, ok := err.(FSError)
|
||||
return ok
|
||||
}
|
||||
|
||||
func getErrorFromAnotherPackage() error {
|
||||
return ErrorFromAnotherPackage{}
|
||||
//return fmt.Errorf("%w", ErrorFromAnotherPackage{})
|
||||
}
|
||||
|
||||
func main() {
|
||||
err := getErrorFromAnotherPackage()
|
||||
if IsFSError(err) {
|
||||
fmt.Println("FSError")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user