Compare commits
1 commit
Author | SHA1 | Date | |
---|---|---|---|
34a01c6279 |
2 changed files with 25 additions and 2 deletions
11
try/try.go
11
try/try.go
|
@ -47,7 +47,14 @@ type call struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// FromErr wraps a standard error into a try-compatible one with extended stack info.
|
// FromErr wraps a standard error into a try-compatible one with extended stack info.
|
||||||
func FromErr(err error) *tryErr {
|
func FromErr(err error) Err {
|
||||||
|
// If the error is already try-compatible, return
|
||||||
|
//nolint:errorlint
|
||||||
|
cterr, ok := err.(Err)
|
||||||
|
if ok {
|
||||||
|
return cterr
|
||||||
|
}
|
||||||
|
|
||||||
terr := &tryErr{err: err, callStack: []call{}}
|
terr := &tryErr{err: err, callStack: []call{}}
|
||||||
|
|
||||||
pc, _, _, ok := runtime.Caller(0)
|
pc, _, _, ok := runtime.Caller(0)
|
||||||
|
@ -82,7 +89,7 @@ func FromErr(err error) *tryErr {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewErr creates a new try-compatible error with extended stack info.
|
// NewErr creates a new try-compatible error with extended stack info.
|
||||||
func NewErr(msg string) *tryErr {
|
func NewErr(msg string) Err {
|
||||||
return FromErr(errors.New(msg))
|
return FromErr(errors.New(msg))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -220,6 +220,22 @@ func TestReturnStd(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCheckTryErr(t *testing.T) {
|
||||||
|
testErr := NewErr("TestErr")
|
||||||
|
|
||||||
|
tf := func() (err Err) {
|
||||||
|
defer Return(&err)
|
||||||
|
Check(testErr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err := tf()
|
||||||
|
|
||||||
|
if err != testErr {
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func ExampleReturn() {
|
func ExampleReturn() {
|
||||||
var err Err
|
var err Err
|
||||||
defer Return(&err)
|
defer Return(&err)
|
||||||
|
|
Loading…
Add table
Reference in a new issue