Предоставление удобных сообщений об исключениях - PullRequest
2 голосов
/ 25 марта 2012

Я использую следующий код для обработки Исключений в моем Formview.Проблема в том, что я хочу дать пользователю простое объяснение в случае возникновения ошибки, но я не могу найти способ сделать это легко.Я должен сказать, что я новичок в ASP.NET.В прошлом я бы использовал ERROR_NO для перехвата ошибок, но я не могу найти здесь эквивалент.Я вижу, что e.Exception.Message выдает информацию об ошибке, но я не могу дать это пользователю! ... *

EG: e.Exception.Message выдает "Оператор DELETE конфликтует с ограничением REFERENCE«FK_users_offices». Конфликт произошел в базе данных «xyz», таблице «dbo.Users», столбце «OfficeID». Оператор был прерван.отобразить что-то вроде: «Этот офис нельзя удалить, потому что существуют зависимые пользователи».например?

Мой соответствующий код:

    protected void fv_OnItemDeleted(Object sender, FormViewDeletedEventArgs e)
    {
        if (e.Exception == null)
        {
            if (e.AffectedRows == 1)
            {
                lblMessage.Text="Record deleted successfully.";
            }
            else
            {
                lblMessage.Text = "An error occurred during the delete operation.";
            }
        }
        else
        {
            lblMessage.Text=e.Exception.Message;
            e.ExceptionHandled = true;
        }

        UserMessage.Visible = true; // Display Error message to user
    }

1 Ответ

1 голос
/ 30 марта 2012

Вы можете проверить тип исключения и возвращать сообщения пользователю в соответствии с типом исключения. Что-то вроде;

protected void fv_OnItemDeleted(Object sender, FormViewDeletedEventArgs e)
{

    if (e.Exception == null)
    {
        if (e.AffectedRows == 1)
        {
            lblMessage.Text="Record deleted successfully.";
        }
        else
        {
            lblMessage.Text = "An error occurred during the delete operation.";
        }
    }
    else
    {
        lblMessage.Text=e.Exception.Message; 
        if(e.Exception.GetType() == typeof(System.StackOverflowException))
             lblMessage.Text = "Some stackoverflowexception occured, report to admin etc."       
        if(e.Exception.GetType() == typeof(System.ArgumentNullException))
             lblMessage.Text = "Some argument exception occured"

        e.ExceptionHandled = true;
    }

    UserMessage.Visible = true; // Display Error message to user
}
...