我有两段代码。什么是最佳实践,为什么呢?在第一个版本中,我添加了一个新的shop并评估它是否成功(除了异常),而在第二个版本中,我对" if“语句也是这样做的。
我最近读到,异常在代码中可能会很昂贵,如果所有的"Add“方法都是这样实现的,那么它可能会导致性能问题。有人能证实这一点吗?
谢谢!
public bool AddShop1(Shop newShop)
{
try
{
ShopDictionary.Add(newShop.ShopId, newShop);
return true;
}
catch (ArgumentNullException)
{
return false;
}
catch (ArgumentException)
{
return false;
}
}
public bool AddShop2(Shop newShop)
{
if (newShop == null || ShopDictionary.ContainsKey(newShop.ShopId))
{
return false;
}
ShopDictionary.Add(newShop.ShopId, newShop);
return true;
}发布于 2015-01-27 12:04:59
您不应该对控制流逻辑使用try catch。
应该使用if或开关等来完成。
尝试捕捉应该只用于不确定的情况,然后应该相应地处理。
发布于 2015-01-27 12:06:22
这取决于您的函数引起异常的频率。如果异常很少发生(每1000次调用一次),那么您可以忽略性能下降。但是,如果从1000次执行中得到800个异常,那么肯定会转换为ifs。但接下来只是一个问题,如果从1000开始有800个异常,它是真正的异常,还是业务逻辑的规则?
发布于 2015-01-27 12:03:58
对于应用程序的性能而言,避免异常是更好的选择。如果你真的对例外感兴趣,你可以这样做,
public bool AddShop2(Shop newShop, out Exception exception)
{
exception = null;
try
{
if (newShop == null || ShopDictionary.ContainsKey(newShop.ShopId))
{
return false;
}
ShopDictionary.Add(newShop.ShopId, newShop);
}
catch (Exception ex)
{
exception = ex;
}
return true;
}https://stackoverflow.com/questions/28170016
复制相似问题