From a857d8e27cc63f102fdbe51eaa61fae035eab9f5 Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Mon, 29 Feb 2016 13:54:35 -0800 Subject: [PATCH] clientv3: document error handling --- clientv3/doc.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/clientv3/doc.go b/clientv3/doc.go index 805931df4..abd340e58 100644 --- a/clientv3/doc.go +++ b/clientv3/doc.go @@ -38,6 +38,24 @@ // } // // use the response // -// TODO: document error handling +// etcd client returns 2 types of errors: +// +// 1. context error: canceled or deadline exceeded. +// 2. gRPC error: see https://github.com/coreos/etcd/blob/master/etcdserver/api/v3rpc/error.go. +// +// Here is the example code to handle client errors: +// +// resp, err := kvc.Put(ctx, "", "") +// if err != nil { +// if err == context.Canceled { +// // ctx is canceled by another routine +// } else if err == context.DeadlineExceeded { +// // ctx is attached with a deadline and it exceeded +// } else if verr, ok := err.(*v3rpc.ErrEmptyKey); ok { +// // process (verr.Errors) +// } else { +// // bad cluster endpoints, which are not etcd servers +// } +// } // package clientv3