2012-03-25 79 views
2

我正在使用下面的代碼來處理我的Formview中的刪除異常。麻煩的是我想給用戶一個簡單的解釋,如果發生錯誤,但我找不到一個方法來輕鬆完成。我應該說我是ASP.NET的新手。在過去,我會用一個ERROR_NO來捕獲錯誤,但我在這裏找不到相應的東西。我可以看到e.Exception.Message給出了錯誤信息,但我不能給這個用戶...給用戶友好的異常消息

EG:e.Exception.Message給「DELETE語句衝突與基準約束」 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 
    } 
+3

http://stackoverflow.com/questions/8910197/user-friendly-error-messages-when-removing-row-with-foreign-key-reference-constr和http://stackoverflow.com/ question/7944559/how-to-manipulate-sqlexception-message-into-user-friendly-message – 2012-03-25 17:18:16

回答

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 
} 
+0

請注意,如果沒有stackoverflow或argumentnullexception,它仍然顯示應該爲普通用戶隱藏的詳細消息。 – 2012-03-30 07:07:25

+0

@JPHellemons我同意你的看法,如果出現這種情況,可以向用戶顯示默認消息,而不是顯示原始異常消息。 – daryal 2012-03-30 07:10:31

+0

好的謝謝你的努力。看來沒有簡單的方法。好的舊錯誤號碼發生了什麼? – gaw 2012-03-30 10:06:33

相關問題