An open API service indexing awesome lists of open source software.

https://github.com/antonmedv/mustcheck

Must & Check
https://github.com/antonmedv/mustcheck

Last synced: 9 months ago
JSON representation

Must & Check

Awesome Lists containing this project

README

          

// ███╗ ███╗██╗ ██╗███████╗████████╗ ██████╗██╗ ██╗███████╗ ██████╗██╗ ██╗
// ████╗ ████║██║ ██║██╔════╝╚══██╔══╝ ██╔════╝██║ ██║██╔════╝██╔════╝██║ ██╔╝
// ██╔████╔██║██║ ██║███████╗ ██║ ██║ ███████║█████╗ ██║ █████╔╝
// ██║╚██╔╝██║██║ ██║╚════██║ ██║ ██║ ██╔══██║██╔══╝ ██║ ██╔═██╗
// ██║ ╚═╝ ██║╚██████╔╝███████║ ██║ ╚██████╗██║ ██║███████╗╚██████╗██║ ██╗
// ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝

package mustcheck

// Installation:
//
// go get github.com/antonmedv/mustcheck
//
// Import in code:
//
// import . "github.com/antonmedv/mustcheck"
//

// Check compares err with nil and panics.
//
// In lots of cases, it's only necessary to log the error in fail fast.
// Copy-paste leads to errors and untested code (someone may forget to return,
// other may use log incorrectly). By using panic you can implement logging
// in one place (recovery) and also have a stack trace. If you code really
// has the second path or needs custom error handling just don't use it.
//
// Example:
//
// f, err := os.Create(path)
// check(err)
//
//
// ¯\_(ツ)_/¯
func Check(err error) {
if err != nil {
panic(err)
}
}

// Must ensures what returned err is nil and returns the result, panics otherwise.
//
// This is useful for creating structures where you don't need explicit error handling
// and prefer to fail fast.
//
// Example:
//
// return Must(strconv.Atoi(str)).(int)
//
// Note what you need to cast an interface to proper type.
//
// (╯°□°)╯︵ ┻━┻
func Must(val interface{}, err error) interface{} {
Check(err)
return val
}

// License under MIT.