goはerrorインターフェイスを持っている、
type error interface {
Error() string
}
よく見る例としてError()関数を実装すれば、独自のerrorを作ることができる。
https://play.golang.org/p/cO0-r95Hd_r
package main
import (
"fmt"
)
type Error struct {
Msg string
Code int
}
func (err *Error) Error() string {
return fmt.Sprintf("ErrorMessage [%s], ErrorCode [%d]", err.Msg, err.Code)
}
func test() error {
return &Error{Msg: "file not found", Code: 2}
}
func main() {
if err := test(); err != nil {
fmt.Println(err)
}
}