170 похожих чатов

Ребят, добрый день! Я же ничего не путаю: когда мы

врапаем ошибку через fmt.Errorf, стек трейса там не оказывается, верно? Надо использовать для этого github.com/pkg/errors

17 ответов

2 просмотра

еще есть https://pkg.go.dev/golang.org/x/xerrors

да, там нет стектрейса, и не будет 🙁 я дошел до того, что добавляю на каждом уровне строку, чтобы понять, откуд file not found лезет

Alexey-Popov Автор вопроса
Daniel Podolsky
да, там нет стектрейса, и не будет 🙁 я дошел до т...

Вариант, но проще, все же, врапнуть ошибку, я думаю

Alexey Popov
Вариант, но проще, все же, врапнуть ошибку, я дума...

так я враппингом стандартным и добавляю

Andrey Burov
покажите пример плиз

``` package errwithplace import ( "fmt" "runtime" "github.com/jpillora/longestcommon" ) var myPlace = getCaller(-1) func getCaller(skip int) string { funcName := "UNKNOWN" pc, f, l, ok := runtime.Caller(skip + 1) if ok { funcName = runtime.FuncForPC(pc).Name() } _, _, _, _ = pc, f, l, funcName return fmt.Sprintf("%s:%d", f, l) //return funcName } func getCallerShort(skip int) string { names := []string{ getCaller(skip + 1), myPlace, } longestcommon.TrimPrefix(names) return names[0] } func Wrap(err error) error { if err != nil { return fmt.Errorf("%q: %w", getCallerShort(1), err) } return nil } ```

добрый, трейса нет, но если возвращать неповторяющиеся строки в каждом фрагменте кода, то по сути это некий аналог трейса. return fmt.Errorf("this is unique string returned only here 1: %w", err) на выходе имеем что-то типа "this is unique string returned only here 1: this is unique string returned only here 2: original error" чем не трейс? Похоже это то, что @onokonem описал

Elmanov Anton
добрый, трейса нет, но если возвращать неповторяющ...

тем что оно обычно не включает в себя строки в исходниках и имя функции

c
тем что оно обычно не включает в себя строки в исх...

строка перед ": %w" должна быть уникальной, тогда вам понятно, какая это функция.

Elmanov Anton
строка перед ": %w" должна быть уникальной, тогда ...

не должна она быть уникальной, она должна описывать ошибку и ее контекст

Andrey Burov
ИМХО так себе затея...

сейчас имею проект с таким подходом и гугл стек - в принципе сразу определяю весь стек по логу

c
не должна она быть уникальной, она должна описыват...

https://github.com/uber-go/guide/blob/master/style.md#error-wrapping собственно

Elmanov Anton
сейчас имею проект с таким подходом и гугл стек - ...

получив ошибку "lalablabla123: file not found" как искать и как понять о чем это вообще и где искать?

c
не должна она быть уникальной, она должна описыват...

похоже у нас с вами трудности понимания. приведу пример. у нас одна функция вызывается из двух других. На выходе у нас будет ошибка failed to a from b: failed to request 3rd party: some err или failed to a from с: failed to request 3rd party: some err Ведь понятен же стек? Причем сделать сообщения разными не составляет труда - это разные функции и давать они должны разный текст ошибки. Если у вас в коде разные функции пишут одинаковые логи - это надо исправлять пока не поздно (потом закопаетесь совсем). Собственно код: func a () error { // err := ... some 3rd party request return fmt.Errorf("failed to request 3rd party: $w", err ) } func b () error { if err := a(); err != nil { return fmt.Errorf("failed to a from b: %w", err ) } return nil } func c () error { if err := a(); err != nil { return fmt.Errorf("failed to a from c: %w", err ) } return nil }

Andrey Burov
получив ошибку "lalablabla123: file not found" как...

искать код, который пишет lalablabla123.

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
Я хочу запустить свой проект в тг. Что-то между пирамидой и майнилкой. Еще подобного ничего не было. Уникальная идея. Нужен именно не бот, а приложение. С ввод, выводом тон...
Павел А.
6
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
14
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Реально в одиночку написать игровой движок на Си?
ㅤ (SVO)
11
Всем привет, товарищи! Можете меня поздравить, получил "отлично" за дисциплину "языки программирования низкого уровня". Честно говоря, не очень хочу, чтобы основы асма, которы...
Ыиу
1
Карта сайта