自己在写一个c#的redis帮助类 用list作为队列操作
public long EnQueue<T>(string queueId, T entity) { using (var redis = new RedisClient(host, port)) { string json = JsonSerializer.SerializeToString<T>(entity); byte[] data = StringExtensions.ToUtf8Bytes(json); return redis.LPush(queueId, data); } }
对于上面的入队方法, 用bool类型还是直接如上面的返回当前队列的长度?
还有帮助类这边是否需要直接捕获异常?
求此类问题的思路...
如果调用方不关心队列长度,就用bool。
如果需要将异常写入日志,就需要捕获。
如果针对异常有额外的处理,比如异常时返回false,就需要捕获。
如果针对下面的代码,想在异常时抛出自定义异常,就需要捕获。
string json = JsonSerializer.SerializeToString<T>(entity); byte[] data = StringExtensions.ToUtf8Bytes(json);
enen
返回值,可以直接用LPush方法的结果,可以做下参数检查,其他的不需要异常处理。
是不是工具方法 不用去捕获异常?
@mushishi: 捕获异常只在你可以处理的时候才捕获,否则应该将其交给调用方来处理。
比如:
int count = 3;
while(true)
{
try
{
using (var redis = new RedisClient(host, port)){}
}
catch(TimeoutException e){ if(count-- == 0) throw e;}
}
@mushishi: 未知的异常不管,因为你不知道该怎么管。
@幻天芒: 嗯 未知的异常还是在具体调用场景里边做相应的处理来的好
@mushishi: 正是如此~
public long EnQueue<T>(string queueId, T entity) { using (var redis = new RedisClient(host, port)) { try { string json = JsonSerializer.SerializeToString<T>(entity); byte[] data = StringExtensions.ToUtf8Bytes(json); }catch(Exception ex) { writeLog(ex); } finally { return redis.LPush(queueId, data); } } }