2010-03-08 29 views

Trả lời

39

Giả sử bạn đang sử dụng SQL Server.

Sử dụng teh Googles - http://blogs.msdn.com/tomholl/archive/2007/08/01/mapping-sql-server-errors-to-net-exceptions-the-fun-way.aspx

try 
{ 
    # SQL Stuff 
} 
catch (SqlException ex) 
{ 
    if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error 
    { 
     switch (ex.Errors[0].Number) 
     { 
      case 547: // Foreign Key violation 
       throw new InvalidOperationException("Some helpful description", ex); 
       break; 
      case 2601: // Primary key violation 
       throw new DuplicateRecordException("Some other helpful description", ex); 
       break; 
      default: 
       throw new DataAccessException(ex); 
     } 
    } 

} 

Trường hợp 547 là người đàn ông của bạn.

CẬP NHẬT Ở trên là mã mẫu và không nên sử dụng. Vui lòng theo liên kết để giải thích lý do.

+2

Nếu bạn theo liên kết và đọc xuống, bạn sẽ nhận thấy rằng mã ở trên được đưa ra làm ví dụ về cách * không * làm như vậy ... – bornfromanegg

+0

Hoàn toàn chính xác - Tôi chỉ có ý định có mã này ở đây để hiển thị phiên bản mở rộng của việc bắt lỗi. Tôi cho rằng tôi nên đặt một thông báo không sử dụng (vì đó là vấn đề với trang khác). – aronchick

-2

Bạn có thể viết mã ngoại lệ dự kiến ​​của bạn trong khối Try nếu có ngoại lệ sẽ được ném nó sẽ được bắt thêm bây giờ bạn có thể nhận được lỗi number.now có thể kiểm tra nó là một Ngoại vi phạm chính hay không

try 
{ 

//your deletetion code 

}catch (SqlException ex) 
    { 

     if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error 
     { 
      switch (ex.Errors[0].Number) 
      { 
       case 547: // Foreign Key violation 
        lblError.Text = "Cannot Delete this Record this is associated with other record...!"; 

        break; 
       default: 
        throw; 

      } 
     } 
    } 
+1

Vui lòng không lặp lại các câu trả lời khác –

Các vấn đề liên quan