2012-03-25 8 views
2

私は、次のコードを使用して、私のFormviewで削除例外を処理しています。問題は、エラーが発生した場合にユーザーに簡単な説明を提供したいが、簡単に行う方法が見つからないということです。私はASP.NETに慣れていないと言わなければならない。過去にはERROR_NOを使用してエラーをトラップしていましたが、ここで同等のエラーを見つけることはできません。私はe.Exception.Messageがエラー情報を与えるが、私はこれをユーザーに与えることができないことがわかります...ユーザーフレンドリーの例外メッセージを提供

EG:e.Exception.Messageは "DELETE文がREFERENCE制約と競合しました" FK_users_offices "競合は、データベース" xyz "、テーブル" dbo.Users "、列 'OfficeID'で発生しました。

この例外を特定して「このユーザーは存在するため、このOfficeは削除できません」というようなメッセージを表示する方法はありますか?例えば?

の背後にある私の関連するコードは次のとおりです。

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/質問/ 7944559 /操作方法 - sqlexception-message-into-user-friendly-message –

答えて

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や引数の受け入れがない場合でも、通常のユーザーには表示されない詳細なメッセージが表示されます。 –

+0

@JPHellemons私はあなたに同意します。この場合、元の例外メッセージを表示する代わりに、デフォルトのメッセージをユーザーに表示することができます。 – daryal

+0

あなたの努力に感謝します。簡単な方法はないようです。良い古いエラー番号に何が起こったのですか? – gaw

関連する問題