2014-05-22 10 views
9

के प्रकार की जांच के लिए जा रहे हैं मुझे गो में कस्टम त्रुटि प्रकार का उपयोग करने में कठिनाई हो रही है। मैंने पढ़ा है इस Blog post on Errorsकस्टम त्रुटि

तो मैं इस कोशिश की:

मेरी model.go में मैं एक कस्टम त्रुटि परिभाषित:

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

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

मेरी तरीकों में से एक में मैं इस तरह एक कस्टम त्रुटि फेंक:

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

उस विधि के कॉलर में मैं अपने प्रकार के लिए लौटाई गई त्रुटि की जांच करना चाहूंगा और यदि वास्तव मेंहै तो कार्रवाई करें 210।

मैं यह कैसे कर सकता हूं?

if err == model.ModelMissingError 

परिणाम *type model.ModelMissingError is not an expression*

कुछ स्पष्ट रूप से मुझे याद आ रही है:

मैं इस कोशिश की।

उत्तर

22

आह, मुझे लगता है कि मुझे यह मिला। मैं एक डम डम हूँ। ब्लॉग पोस्ट आगे पढ़ना इस तरह जाओ का एक सा को उजागर करता है:

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

इस अल्पविराम ठीक मुहावरा है, स्पष्ट रूप से मैं ऐसा फिर से करने की जरूरत है मेरी go lang tour

4

मैं इस प्रकार स्विच कथन का उपयोग एक त्रुटि दावे बनाने के लिए manged है

err := FuncModelMissingError() 

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

मुझे आशा है कि यह तुम बाहर में मदद करता है।

संबंधित मुद्दे