2012-08-02 55 views
0

我在写一个服务层,它使用实体框架从数据库获取/设置数据,然后将其传递给MVC Web应用程序。我无法决定将数据库错误返回给Web应用程序的方式是什么。ASP MVC N层异常处理

我应该抛出一个异常,并且Web应用程序可以相应地处理它,或者我应该返回一个字符串/布尔值来表示数据库操作已经工作或没有?

任何有关最佳实践的建议?

感谢

回答

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

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

  1. 使用自定义错误页面抛出异常。
  2. 使用HttpModule记录异常以进行故障排除。登录模块ELMAH,与ASP.NET MVC完美协作,并允许您在Web上查看日志。