我有以下代码,当我点击表格时,它会检索记录详细信息:
public ActionResult City(string rk)
{
try
{
var city = _cityService.Get("0001I", rk);
if (city == null)
{
throw new ServiceException("", "Error when fetching city " + rk);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我应该使用什么样的例外来解决这个"没有记录"的问题?我看到有不同类型的异常,但我不确定哪个是合适的,或者即使我正确编码.
Joe*_*Joe 48
KeyNotFoundException是一个合理的选择,并且符合Microsoft指南:
考虑抛出驻留在System命名空间中的现有异常,而不是创建自定义异常类型.
但是,您可以考虑创建自己的Exception类型(再次来自Microsoft指南):
...您有一个错误条件,可以以与任何其他现有异常不同的方式以编程方式处理.
如果您确实创建了自己的Exception,则应遵循设计自定义异常的准则,例如,您应该使您的Exception类型可序列化.
创建您自己的异常非常容易。只需创建一个类,为其指定名称、扩展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) { }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20649 次 |
| 最近记录: |