я могу обработать ошибки Великобритании в ASPX? - PullRequest
0 голосов
/ 15 марта 2011

Ошибка сервера в «/» приложении. Невозможно вставить дубликат ключевой строки в объект 'dbo.Articles' с уникальным индексом 'UK_Articles'. Заявление был прекращен.

Описание: необработанное исключение произошло во время выполнения текущий веб-запрос. Пожалуйста, просмотрите трассировку стека для более информация об ошибке и ее возникновении в коде.

Сведения об исключении: System.Data.SqlClient.SqlException: невозможно вставить дубликат ключевой строки в объекте 'dbo.Articles' с уникальным индексом 'UK_Articles'. Заявление было прекращено.

Могу ли я вместо внутренней ошибки сервера 500 показать ошибку Великобритании? могу я поймать ошибку и показать ее как-нибудь?

EDIT:

 try
        {
            NHibernateSession.Save(entity);
        }

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

            throw;
        }

но NHibernateSession.Save (entity) всегда генерирует GenericADOException и никогда SqlException. Я хочу поймать вставку в nhibernate, чтобы я мог подключить его глобально.

Ответы [ 2 ]

2 голосов
/ 15 марта 2011

Я предполагаю, что вы используете 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 голос
/ 15 марта 2011

Вы можете показать ошибки вручную, используя web.config

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