Типичный код Go (который использует пакет os
) не анализирует возвращенный объект ошибки.Он просто печатает сообщение об ошибке для пользователя (который затем знает, что пошло не так, основываясь на напечатанном сообщении) или возвращает ошибку как есть вызывающей стороне.
Если вы хотите предотвратитьЕсли ваша программа не открыла несуществующий файл или не хочет проверить, доступен ли файл для чтения / записи, я рекомендую использовать функцию os.Stat до открытия файла.
Вы можете проанализировать тип Go возвращенной ошибки, но это кажется неудобным:
package main
import "fmt"
import "os"
func main() {
_, err := os.Open("non-existent")
if err != nil {
fmt.Printf("err has type %T\n", err)
if err2, ok := err.(*os.PathError); ok {
fmt.Printf("err2 has type %T\n", err2.Error)
if errno, ok := err2.Error.(os.Errno); ok {
fmt.Fprintf(os.Stderr, "errno=%d\n", int64(errno))
}
}
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
}
}
, который печатает:
err has type *os.PathError
err2 has type os.Errno
errno=2
open non-existent: no such file or directory