我可以处理aspx中的英国错误吗?

时间:2011-03-15 09:20:06

标签: c# error-handling custom-error-pages

  '/'应用程序中的服务器错误。无法插入重复的键行   具有唯一索引'UK_Articles'的对象'dbo.Articles'。该声明   已被终止。

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.Data.SqlClient.SqlException:无法插入   具有唯一索引的对象'dbo.Articles'中的重复键行   'UK_Articles'。声明已经终止。

我可以代替内部服务器错误500显示UK错误吗?我可以抓住错误并以某种方式显示它吗?

编辑:

 try
        {
            NHibernateSession.Save(entity);
        }

        catch (SqlException sex )
        {
            if (sex.Message.Contains("with unique index"))
                throw new UniqueConstraintException("UK ERROR");

            throw;
        }

但NHibernateSession.Save(实体)始终使用GenericADOException,而不是SqlException。我想在nhibernate中捕获insert,这样我就可以全局收集它。

2 个答案:

答案 0 :(得分:2)

我假设你使用的是Sql Server。

您需要try catch块来处理SqlException

try
{
    // run inser or update query here
    myObj.InserRow();
}
catch (System.Data.SqlClient.SqlException ex)
{
    if (ex.Number == 2601)
    {
        //"duplicate entry found!";
    }
    else
    {
        // some other kind of sql related exception
    }
}
catch (Exception ex)
{
    // any other exception
}

答案 1 :(得分:1)

您可以使用web.config显示手动错误

<customErrors mode="On" defaultRedirect="~/ErrorPage.aspx">
  <error statusCode="500" redirect="~/500Error.aspx" />
</customErrors>