我正在一个项目中为一些打算从其他项目调用的数据库操作编写公共函数。直接写代码,我可以采用以下方法:
public int GetCount(Apple apple, Orange orange)
{
try
{
// query;
return 1000;
}
catch
{
// log it
return -1;
}
}
或者
public int? GetCount(Apple apple, Orange orange)
{
try
{
// query;
return 1000;
}
catch
{
// log it
return null;
}
}
或者
public bool GetCount(Apple apple, Orange orange, out int count)
{
count = -1;
try
{
// query;
count = 1000;
return true;
}
catch
{
// log it
return false;
}
}
我目前对其他业务对象执行“null”方式,例如:
public Apple GetApple(Orange orange)
{
try
{
// query;
return apple;
}
catch
{
// log it
return null;
}
}
调用者检查返回的值是否为null
并相应地弹出错误消息。所以我也倾向于将int?
值类型用作返回类型。但我很想知道这些东西的可接受设计或鼓励实践是什么。
编辑:如果我把 try catch 放在调用者周围,那我的代码库不会到处都是 try catch 吗?从被调用者那里捕获异常不是更容易,这样调用它的所有函数都不需要关心吗?如果被调用者捕捉到错误并让调用者知道发生了一些错误,那有什么问题?