2011-11-15 20 views
5

Próbuję zwrócić komunikat przyjazny dla użytkownika komunikat o błędzie, gdy wyjątek Mysql jest zgłaszane w C#. Aktualnie zwracam komunikat wyjątku, ale wiadomość ta nie jest przyjazna dla użytkownika. Zastanawiam się więc, czy któryś z was nie ma jakiejś sztuczki, która nie wymaga żadnego wyrafinowanego analizowania wyrażeń regularnych otrzymanych komunikatów o błędach, aby wyświetlić je użytkownikowi w sposób, który miałby dla nich sens.Złap błąd Mysql w C# przyjazne dla użytkownika

Próbuję trzymać się z dala od złożonego kodu weryfikacyjnego przed wstawieniem/aktualizacją/usunięciem rekordu, ale wydaje się, że to jedyny sposób ... chyba że wiesz lepiej!

+2

Każdy błąd mysql zawiera kod błędu: http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html Możesz napisać własne komunikaty o błędach. –

+0

Hej Marc, to wydaje się być dobrym pomysłem, ale z której metody w obiekcie wyjątku mogę uzyskać ten kod? Wydaje mi się, że tylko otrzymuję wyjątek MySql.Data i wiadomość z bazy danych bez kodu błędu – Stainedart

Odpowiedz

6

Jak Marc B wskazał, że każdy błąd MySQL kod błędu, więc można złapać MySqlException użyciu try ... catch bloku tak:

try 
{ 

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

Możesz więc napisać instrukcję case, aby dostarczyć komunikat o błędzie dla każdego kodu błędu, tutaj znajduje się lista server error codes and messages.

+0

Tak, doszedłem do wniosku, że moim głównym problemem było złapanie wyjątku, a nie specyficznego wyjątku MySqlException, więc nie miałem dostępu do atrybutu Number. Wielkie dzięki. – Stainedart

+0

Właściwie dzięki @Mark B. –

1

Można spróbować połowu konkretny komunikat o błędzie SQL i wyświetlić go

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

Witam Carlos, właśnie to robię, ale duplikat klucza przy wstawianiu nie jest wiadomością zrozumiałą dla wszystkich, których próbuję zbuduj na tym błędzie przyjazny komunikat, taki jak "wprowadzona wartość jest już obecna w systemie" – Stainedart

+0

Niestety, nie ma sposobu na przetłumaczenie komunikatów o błędach na sformułowania, które zrozumie przeciętny Joe. W przeszłości użyłem pliku zasobów i umieściłem w jednej kolumnie komunikat wyjątku .Net, a następnie w drugiej kolumnie tłumaczenie klienta. Bardzo pouczające, ale dla tego projektu miałem wymóg, aby błąd był łatwy do zrozumienia przez użytkownika. Wyjątki są naprawdę przeznaczone dla programistów do obsługi programowej (przetłumaczenie na przyjazną dla użytkownika wiadomość, zarejestrowanie błędu itp.) W celu lepszego radzenia sobie z błędami. – Losbear

Powiązane problemy