ASP MVC N层异常处理(ASP MVC N-Tier Exception handling)

2019-10-17 02:17发布

我写它使用实体框架,从数据库中获取/组数据,然后把它传递给一个MVC的Web应用服务层。 我不能决定什么是数据库错误返回给Web应用程序的bext方式。

我应该抛出一个异常,Web应用程序可以相应地处理它,或者我应该返回一个字符串/布尔传达数据库行动工作或没有?

什么是最好的做法什么建议吗?

谢谢

Answer 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;
    }
}

只要你需要的任何信息添加到异常类的性质,并在构造函数初始化它们。

这真的不是最好的做法,与返回值告知异常高的水平,因为大部分的方法已经返回了一些数据。



Answer 2:

不应该处理异常的Web应用程序抛出,让自然异常抛出,甚至从数据访问层。 有了这样一来,很容易让你排除故障,尤其在生产阶段。 所以,如何处理好:

  1. 使用自定义错误页抛出异常。
  2. 使用的HttpModule记录异常进行故障排除。 ELMAH ,洛模块,完美的作品与ASP.NET MVC和alows您在网络上查看日志。


文章来源: ASP MVC N-Tier Exception handling