【问题标题】:Giving user friendly exception messages提供用户友好的异常消息
【发布时间】:2012-03-25 16:35:05
【问题描述】:

我正在使用以下代码来处理我的 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
    }

【问题讨论】:

标签: c# asp.net sqldatasource formview


【解决方案1】:

您可以检查异常类型并根据异常类型向用户返回消息。类似的东西;

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
}

【讨论】:

  • 请注意,如果不是stackoverflow或argumentnullexception,它仍然会显示应该对普通用户隐藏的详细消息。
  • @JPHellemons 我同意你的观点,如果是这种情况,可以向用户显示默认消息,而不是显示原始异常消息。
  • 好的,谢谢大家的努力。似乎没有简单的方法。好的旧错误号怎么了??!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多