ASP MVC N-Tier异常处理

时间:2012-08-02 17:07:01

标签: asp.net-mvc-3 exception-handling

我正在编写一个服务层,它使用Entity框架从数据库中获取/设置数据,然后将其传递给MVC Web应用程序。我无法确定将数据库错误返回给Web应用程序的bext方法。

我应该抛出一个异常并且Web应用程序可以相应地处理它,还是应该返回一个字符串/ bool来表示数据库操作是否有效?

有关什么是最佳做法的任何建议?

由于

2 个答案:

答案 0 :(得分:1)

您可以不在服务层中处理它们,也可以使用您将创建的异常类对它们进行规范化。例如:

public class DatabaseException: Exception
{
    public string TableName { get; private set; }

    public DatabaseException(string tableName, Exception innerException)
        :base("There a database error occured.", innerException)
    {
        TableName = tableName;
    }
}

只需将您需要的任何信息作为属性添加到异常类中,并在构造函数中初始化它们。

通过返回值通知更高级别的异常并不是最佳做法,因为大多数方法已经返回了一些数据。

答案 1 :(得分:1)

不应该处理从Web应用程序抛出的异常,让异常自然抛出,即使是从数据访问层。通过这种方式,您可以轻松进行故障排除,尤其是在生产阶段。那么,如何处理:

  1. 对于抛出的异常使用自定义错误页面。
  2. 使用HttpModule记录异常以进行故障排除。 ELMAH,loggin模块,与ASP.NET MVC完美配合,让您可以在Web上查看日志。