Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

catmullet/deferror

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🦴 Deferror

Description

Simple way to automatically return errors from functions you defer.

Examples

Style 1

// returns "error coming from defer"
package main

import (
	"fmt"
	"github.com/catmullet/deferror"
)

func main() {
    if err := yourLogicHere(); err != nil {
		fmt.Println(err)
	}
}

// defer function that return error
func deferWithError() error {
    return fmt.Errorf("error coming from defer")
}

// function calling defer requires a named variable of interface error
func yourLogicHere() (err error) {
	// pass by pointer the error.
    defer deferror.As(deferWithError, &err)
    return
}

Style 2

// returns "error coming from defer"
package main

import (
	"fmt"
	"github.com/catmullet/deferror"
)

func main() {
    err, deferError := yourLogicHere()
    if err != nil {
		fmt.Println(err)
    }
    if deferError != nil {
		fmt.Println(deferError)
    }
}

// defer function that return error
func deferWithError() error {
    return fmt.Errorf("error coming from defer")
}

// function calling defer requires a named variable of interface error
// you can seperate out the error if you would like. deferror.As will never overwrite the error
// passed in if it is not nil.
func yourLogicHere() (err, deferError error) {
	// pass by pointer the error.
    defer deferror.As(deferWithError, &deferError)
    return
}

About

🦴 Automatic return of error from deferring functions.

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.