区分超时和无数据情况

时间:2014-08-19 10:51:07

标签: c# .net couchbase nosql

目前在我的项目中,我遇到了一个问题,即在请求数据时两种情况之间没有区别:

  1. 当db中实际上没有数据时(对于请求的参数)
  2. 发生超时时(例如,当VPN连接丢失时)
  3. 在两种情况下方法:

    object Get(string key)
        Member of Enyim.Caching.IMemcachedClient
    

    返回null。我希望在第二种情况下发现例外情况,以区分这两种情况。

    对于SocketPool receiveTimeout设置为{00:00:01},但即使过期,也不会像我预期的那样抛出异常。你能建议吗?

1 个答案:

答案 0 :(得分:1)

MemcachedClient实现了两个接口:IMemcachedClientIMemcachedResultsClientIMemcachedClient上的每个基本方法在另一个接口上都有一个等效的ExecuteXXX方法,可以返回更详细的结果。

你可以这样做:

var result = client.ExecuteGet<MyType>(key);

结果将是IGetOperationResult,您可以查询各种状态代码,或获取日志或其他内容的消息。

由于您指定的原因,我倾向于总是更喜欢ExecuteXXX() cals而不是更简单的XXX() cals,即使使用它们可能需要更多代码。