Pull to refresh

Comments 2

package util

import (
    "fmt"
    "runtime"
)

func Wrap(err error, args ...any) error {
    if err == nil {
        return nil
    }
    pc, _, _, _ := runtime.Caller(1)          // 1 ‒ вызывающая функция
    fn := runtime.FuncForPC(pc).Name()        // имя метода
    return fmt.Errorf("%s%v: %w", fn, args, err)
}

Использование (copy paste)

func (s *SomeObject) SomeMethod(val any) error {
    if err := otherMethod(val); err != nil {
        return util.Wrap(err, val) // автомат: имя метода + значения
    }
    return nil
}

И на уровне контроллера ловим, показываем или логируем в зависимости от ситуации

Хотя...

С rust не сравнится, всё равно

Sign up to leave a comment.

Articles