metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2006-09-14 11:03 pm

GUI и SqlException

Как известно, проверять объекты на валидность перед сохранением лень. И вообще делать что-либо в GUI лень.
А вот в базе данных делать констрейнты и сложные условия предметной области на триггерах - не лень. Главным образом из-за того, что в GUI это означает борьбу с импедансом "код-база данных", а триггер или констрейнт уже в базе данных.

Но вот надо бы юзеру красивое сообщение об ошибке показывать, а не ужас вроде "ESUBDException with message 'Violation of FOREIGN KEY fkZHABBAKLESCH_KORTCHID on Table ZHABBAKLESCH'". Посему всем констрейнтам назначаем уникальные имена(по какой-то неясной науке причине во всех моих базах так уже сделано, видимо марсиане в мозг подсказали), эти имена вытаскиваем каким нибудь не особо долгим образом из сообщения об ошибке, по ним находим в таблице локализованных сообщений понятное юзеру сообщение и показываем.

[identity profile] vp.livejournal.com 2006-09-14 08:36 pm (UTC)(link)
здравая мысль
только нужно думать и проверять, какие комбинации ексепшынов могут выскакивать и с какими словами. Но и оригинальный код ошибки тоже писать.

[identity profile] metaclass.livejournal.com 2006-09-14 09:06 pm (UTC)(link)
Оригинальный писать в лог событий. Все равно обычно юзера с трудом его прочесть способны. Разве что числовой оставить.

[identity profile] vp.livejournal.com 2006-09-15 06:09 am (UTC)(link)
не, на случай, если нет возможности удаленно этот лог слить, нуна и на экран писать, под русским текстом.

[identity profile] medvedd.livejournal.com 2006-09-17 07:41 pm (UTC)(link)
Увидев нерусские крякозяблы, юзер тут же постарается изгнать их из памяти и вообще не смотреть на них :)

[identity profile] metaclass.livejournal.com 2006-09-17 08:32 pm (UTC)(link)
Именно поэтому их и надо прятать под русский текст "случилось страшное!", чтобы пользователь хотя бы почесался :)