gobuch/golang-language-samples/errors-owntyp-wrap/errors.go

50 lines
970 B
Go
Raw Normal View History

2020-08-21 04:26:40 +00:00
package main
import (
"errors"
"fmt"
"log"
)
var PermissionError = errors.New("keine Berechtigung")
//StatementExecutionError ist ein eigener Fehlertyp
//mit zusätzlicher Information
type StatementExecutionError struct {
Statement string
Message string
Cause error
}
func (wse *StatementExecutionError) Unwrap() error {
return wse.Cause
}
//Implementierung der Error Methode des error Interface
func (wse *StatementExecutionError) Error() string {
return wse.Message
}
func fuehreStatementAus(statement string) error {
if statement != "1=1" {
return &StatementExecutionError{
Statement: statement,
Message: "Statement kann nicht ausgeführt werden",
Cause: PermissionError,
}
}
return nil
}
func main() {
err := fuehreStatementAus("v:=b")
//Prüfung über errors Package
if errors.Is(err, PermissionError) {
log.Fatal("Das Statement konnte nicht ausgeführt werden.")
} else {
fmt.Println("alles ok")
}
panic("")
}