Ошибки Голанга и документация - PullRequest
0 голосов
/ 01 июня 2018

К сожалению, документация об ошибках golang в стандартной библиотеке практически отсутствует.например, просто открывая файл, возвращаемые значения для ошибки не документированы, за исключением того, что вы можете напечатать строку.Но это не всегда верный способ справиться с этим.

Есть ли способ определить, каким может быть настоящий код ошибки, методом проб и ошибок, а не просто распечатывать текст?Кажется глупым сопоставлять весь текст для конкретной ошибки.

например, учитывая, что я хочу в конечном итоге добиться чего-то подобного (при условии, что это правильно)

if fd, err := io.Open("filename"); err != nil {
  if err != io.ErrFileNotFound {
    log.Fatalf("Error opening file: %s", err)
  }
}

Насколько я могу сказать что-нибудькоторый реализует интерфейс ошибки, может быть использован как ошибка.Но я пытаюсь определить, в чем заключается ошибка.Ошибка может быть структурой, в которой есть другие поля, такие как числовое поле, чтобы указать мне, какой тип ошибки, кроме самого текста.Но как я узнаю, какие другие данные содержится в ошибке, кроме просмотра многих исходных файлов и иногда десятков вызовов функций.

Имеет ли это смысл?

В качестве более практического примера.Я использую библиотеку yaml для загрузки файла конфигурации.Если файл конфигурации не существует, я хочу продолжить (он будет использовать значения по умолчанию).Но если есть ошибка прав доступа, я хочу, чтобы ошибка считалась фатальной.Проблема в том, что не совсем понятно, как ошибка будет выглядеть раньше времени.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Всегда проверяйте годок, если вы не ознакомлены с библиотекой.Ниже приведен URL-адрес Godoc io и читайте дальше

https://godoc.org/io

0 голосов
/ 01 июня 2018

Используйте os.IsNotExist , чтобы проверить, нет ли ошибок в файле:

f, err := os.Open("filename")
if os.IsNotExist(err) {
  // handle missing file
} else if err != nil {
  // handle other errors
}

Функции os.IsExist , os.IsPermission и is.Timeout проверяет наличие других распространенных типов ошибок.

os , io и другие пакеты объявляют переменные для определенных ошибок.

...