2014-05-22 9 views
9

Ho difficoltà a utilizzare un tipo di errore personalizzato in Vai. Ho letto questo Blog post on ErrorsVerifica il tipo di errore personalizzato

Così ho provato questo:

Nel mio model.go ho definito un errore personalizzato:

type ModelMissingError struct { 
    msg string // description of error 
} 

func (e *ModelMissingError) Error() string { return e.msg } 

In uno dei miei metodi butto un errore personalizzato come questo:

... 
return Model{}, &ModelMissingError{"no model found for id"} 
... 

nel chiamante di questo metodo vorrei controllare l'errore restituito per il suo tipo e intervenire se si tratta in realtà di un ModelMissingError.

Come posso fare questo?

ho provato questo:

if err == model.ModelMissingError 

Il risultato è *type model.ModelMissingError is not an expression*

Chiaramente mi manca qualcosa.

risposta

22

Ah, penso di averlo capito. Sono un dum dum. Leggendo il post sul blog inoltre espone un po 'di andare in questo modo:

serr, ok := err.(*model.ModelMissingError) 

Questa è la virgola ok linguaggio, chiaramente ho bisogno di ri fare il mio go lang tour

4

ho consumassimo per fare un'affermazione errore utilizzando l'istruzione switch come segue:

err := FuncModelMissingError() 

switch t := err.(type) { 
default: 
    fmt.Println("not a model missing error") 
case *ModelMissingError: 
    fmt.Println("ModelMissingError", t) 
} 

Spero che questo ti aiuta.

Problemi correlati