2012-03-25 2 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- 사용자 친화적 메시지로 메시지 –

답변

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이 없으면 일반 사용자에게 숨겨져 있어야하는 자세한 메시지를 계속 표시합니다. –

+0

@JPHellemons 나는이 경우에 원래 예외 메시지를 표시하는 대신 사용자에게 기본 메시지를 표시 할 수 있습니다. – daryal

+0

여러분의 모든 노력에 감사드립니다. 쉬운 방법이없는 것 같습니다. 좋은 오래된 오류 번호는 어떻게 된거야 ?? !! – gaw