[英]What kind of exception should I use for “No Record Found” ? (C#)
我有以下代码,当我点击表格时,它会检索记录详细信息:
public ActionResult City(string rk)
{
try
{
var city = _cityService.Get("0001I", rk);
if (city == null)
{
throw new ServiceException("", "Error when fetching city " + rk);
}
}
}
我应该使用什么样的例外来解决这个“没有找到记录”的问题? 我看到有不同类型的异常,但我不确定哪个是合适的,或者即使我正确编码。
KeyNotFoundException是一个合理的选择,并且符合Microsoft指南 :
考虑抛出驻留在System命名空间中的现有异常,而不是创建自定义异常类型。
但是,您可以考虑创建自己的Exception
类型(再次来自Microsoft指南):
...您有一个错误条件,可以以与任何其他现有异常不同的方式以编程方式处理。
如果您确实创建了自己的Exception
,则应遵循设计自定义异常的准则 ,例如,您应该使您的Exception
类型可序列化。
您应该创建自己的异常,在这种情况下可能会将其称为RecordNotFoundException
。
创建自己的异常非常简单。 只需创建一个类,为其命名,扩展Exception
或其他一些异常类型,并提供所需的构造函数(只需调用基本的Exception
构造函数)。
如果你想增加更多,你可以,但你经常不需要。
如果您发现自己为项目创建了许多例外,则可能需要创建一个基本异常类型(扩展Exception),所有异常都会扩展。 这是您在编写库时可能会执行的操作。 它允许某人捕获特定异常,或从库中抛出的异常,或任何异常。
public class MySuperAwesomeException : Exception
{
public MySuperAwesomeException() : base() { }
public MySuperAwesomeException(string message) : base(message) { }
public MySuperAwesomeException(string message, Exception innerException)
: base(message, innerException) { }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.