2011-12-03 21 views
5

Tôi đang sử dụng SqlConnection, SqlDataReader, SqlCommandSqlParameters để giao tiếp với cơ sở dữ liệu của tôi. Tôi đang tìm kiếm lời khuyên về việc bắt được Exceptions có liên quan nhất thay vì ném một Exception() mới, đó là một lớp quá rộng.Những ngoại lệ nào cần nắm bắt khi giao dịch với SqlConnection, SqlDataReader, SqlCommand?

Tất cả trợ giúp đều được đánh giá cao!

Trả lời

8

có liên quan nhất có khả năng tương đương với các điều kiện môi trường phổ biến nhất có thể xảy ra. Lỗi mã hóa sẽ được sửa nhưng bạn không thể kiểm soát các vấn đề môi trường.

Ngoài ra, bên cạnh tài liệu trên lớp học, bạn có thể chỉ cần thử các điều kiện đó và đảm bảo rằng bạn đang xử lý đúng điều kiện. Những năm trước đây, một nhà phát triển yêu cầu tôi những gì ngoại lệ sẽ được ném vào một số công nghệ khác nhau nếu kết nối bị mất - vì vậy tôi kéo cáp mạng của mình và chúng tôi chạy mã của mình :)

Một số người thường sẽ là:

  1. Rút phích cắm cáp mạng của bạn
  2. Disable card mạng của bạn
  3. Dừng SQL server
  4. Tạo một sproc mà phải mất một thời gian rất dài
  5. Hãy để cho cơ sở dữ liệu/tempdb có được đầy đủ
  6. Đảm bảo bạn không có quyền truy cập vào máy chủ sql
  7. Tạo một sproc rằng deadlocks

Trong một số các trường hợp này (mạng, thời gian chờ, bế tắc nạn nhân), bạn sẽ muốn thử lại có lẽ với tăng chờ đợi. Đối với những người khác như db đầy đủ tốt nhất bạn có thể hy vọng là cung cấp hướng dẫn tốt hoặc thậm chí đăng nhập chi tiết cho admin.

Bằng cách thử các điều kiện bạn được đảm bảo, ngoại lệ sẽ bị loại bỏ và bạn có thể xác minh bạn đang xử lý điều kiện một cách thích hợp.

+0

Ví dụ tuyệt vời về "dạy đàn ông cho cá". –

+0

@bryanmac - Cảm ơn câu trả lời của bạn. Tôi đã chỉ có lỗi mã hóa trong tâm trí khi tôi hỏi câu hỏi và tôi đã không nghĩ về điều kiện môi trường, cảm ơn bạn! –

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