我在这里发现了问题Should a retrieval method return 'null' or throw an exception when it can't produce the return value?和 Should functions return null or an empty object? ,但我认为我的情况很不同。
我正在编写一个由网络服务和客户端组成的应用程序。 Webservice负责访问数据,并将数据返回给客户端。我这样设计我的应用程序:
//网络服务
try
{
DataTable data = GetSomeData(parameter);
return data
}
catch (OopsException ex)
{
//write some log here
return null;
}
//客户端:
DataTable data = CallGetSomeData(parameter);
if(data == null)
{
MessageBox.Show("Oops Exception!");
return;
}
嗯,有一个不返回null的规则。我认为我不应该只是重新抛出异常并让客户端捕获 SoapException。您对此有何评论?有更好的方法来解决这个问题吗?
谢谢。
最佳答案
就您的情况而言,您的 Web 服务中已引发并以某种方式处理了异常。
返回 null 是一个好主意,因为客户端代码可以知道您的 Web 服务中出现了错误。
就客户而言,我认为你的方式很好。我认为没有理由抛出另一个异常(即使您不再使用 Web 服务)。
我这么说是因为,从技术上讲,没有任何事情会导致您的客户端代码出现错误。您刚刚从网络服务中获取了不良数据。这只是处理来自外部源的潜在错误输入的问题。
就我个人而言,根据经验,当我得到错误数据时,我会避免抛出异常,因为客户端代码无法控制这一点。
只需确保处理 data == null
条件时不会导致客户端代码崩溃。
关于exception - 我应该返回 null 还是抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969997/