golang

2017-01-10 9 views
2

にエラーメッセージを比較するのは、私はJavaでそうgolang

​​

ようgolangに新しいエラーを作成しましょう、私はGetMessage()メッセージで例外を取得することができることに慣れています。返された場合、そのエラーをどのように比較すればよいでしょうか?

これはゴランでどのように行われますか?

+0

[source](https://golang.org/src/errors/errors.go)によると、 'Error()'メソッドはメッセージを返すので、 'some_err.Error()'をメッセージを入手してください。 – ymonad

+0

https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully –

答えて

4

はエラーでパッケージレベルの変数を宣言します。エラーを返すとき

var errExample = errors.New("this is an example") 

は、この値を使用します。特定のエラーをチェックするために、この値と比較:

if err == errExample { 
    // handle it 
} 

エクスポートパッケージ外部のコードがエラーにアクセスする必要がある場合、変数:

var ErrExample = errors.New("this is an example") 

はこのようにそれを使用します。

if err == somepackage.ErrExample { 
    // handle it 
} 

Here are some examples

エラーのError()メソッドから返された文字列と比較しないでください。コードが脆弱になる可能性があります。

+0

'var erros.New'を' const'にすることは可能ですか? – 1N5818

+0

いいえ、constにエラーを付けることはできません。 –

+0

'err.Error()'と同じ出力を持っていても、基になるエラーが異なるタイプの場合、これは動作しません。例:https://play.golang.org/p/uujqxa3Qdq – Kaedys