2011-11-15 33 views
5

Tôi đang cố gắng trả lại thông báo lỗi thân thiện với người dùng khi một ngoại lệ Mysql được ném vào C#. Tôi hiện đang trả lại thông báo ngoại lệ nhưng thông điệp đó không thân thiện với người dùng. Vì vậy, tôi đã tự hỏi nếu một trong các bạn có bất kỳ thủ thuật nào không yêu cầu bất kỳ phân tích cú pháp regex ưa thích nào của các thông báo lỗi nhận được để hiển thị chúng cho người dùng theo cách có ý nghĩa với chúng.Làm cho lỗi Mysql bị bắt trong C# thân thiện với người dùng

Tôi đang cố gắng tránh xa mã xác nhận phức tạp trước khi chèn/cập nhật/xóa bản ghi nhưng dường như đó là cách duy nhất ... trừ khi bạn biết rõ hơn!

+2

Mọi lỗi mysql đều có một mã lỗi: http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html Bạn có thể tự viết các thông báo lỗi của mình cho chúng. –

+0

Xin chào Marc, điều đó có vẻ như là một ý tưởng hay nhưng từ phương pháp nào trong đối tượng ngoại lệ, tôi có thể lấy mã này? Tôi chỉ dường như nhận được ngoại lệ MySql.Data và tin nhắn từ db mà không có mã lỗi – Stainedart

Trả lời

6

Như Marc B chỉ rằng mỗi lỗi Mysql có một mã lỗi, vì vậy bạn có thể bắt một MySqlException sử dụng một khối try ... catch như thế này:

try 
{ 

} 
catch (MySqlException ex) 
{ 
    int errorcode = ex.Number; 
} 

Vì vậy, bạn có thể viết tuyên bố trường hợp để cung cấp thông báo lỗi cho từng mã lỗi, dưới đây là danh sách server error codes and messages.

+0

Có, tôi đã tìm ra vấn đề chính của mình là tôi đã bắt ngoại lệ và không phải là MySqlException cụ thể nên tôi không có quyền truy cập vào thuộc tính Number. Cảm ơn rất nhiều. – Stainedart

+0

Thực ra là nhờ @Mark B. –

1

Bạn có thể thử bắt được thông báo lỗi sql cụ thể và hiển thị nó

Try 

Catch ex as SqlException 
'''sql specific error message 
''ie: 
response.write("oops! error message: " & ex.message) 
Catch ex as Exception 
'''any other runtime error messages 
End Try 
+0

Hi Carlos, đây là những gì tôi hiện đang làm nhưng một chìa khóa trùng lặp trên chèn không phải là một tin nhắn dễ hiểu bởi tất cả mọi người tôi đang cố gắng xây dựng trên những lỗi đó một thông điệp thân thiện với người dùng như "giá trị đã nhập đã có trong hệ thống" – Stainedart

+0

Thật không may là không có cách nào dịch các thông báo lỗi thành từ ngữ mà Joe trung bình của bạn sẽ hiểu. Những gì tôi đã làm trong quá khứ là sử dụng một tập tin tài nguyên và đặt trong một cột thông báo ngoại lệ .Net và sau đó trong cột thứ hai bản dịch người dùng cuối. Rất tidious, nhưng đối với dự án đó tôi đã có một yêu cầu rằng các lỗi đã được dễ hiểu bởi người sử dụng. Các ngoại lệ được thiết kế thực sự cho các lập trình viên để xử lý theo chương trình (dịch thành một tin nhắn thân thiện, ghi lại lỗi, vv) để xử lý các lỗi một cách duyên dáng hơn. – Losbear

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