Сообщения

Сообщения за сентябрь, 2018

Не без паники в Go

Изображение
В то время, как обсуждается возможный новый дизайн обработки ошибок и ведутся споры о преимуществах явной обработки ошибок, предлагаю рассмотреть некоторые особенности ошибок, паник и их восстановления в Go, которые будут полезны на практике. error error это интерфейс. И как большинство интерфейсов в Go, определение error краткое и простое: type error interface { Error() string } Получается любой тип у которого есть метод Error может быть использован как ошибка. Как учил Роб Пайк Ошибки это значения , а значениями можно оперировать и программировать различную логику. В стандартной библиотеки Go имеются две функции, которые удобно использовать для создания ошибок. Функция errors.New хорошо подходит для создания простых ошибок. Функция fmt.Errorf позволяет использовать стандартное форматирования. err := errors.New( "emit macho dwarf: elf header corrupted" ) const name, id = "bimmler" , 17 err := fmt.Errorf( "user %q (id %d) not foun