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

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

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

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

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

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

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

Date: 2006-09-14 09:10 pm (UTC)
From: [identity profile] beskov.livejournal.com
Идея интересная, вот только что вы напишете в данном конкретном случае? "Телефон разработчика такой-то", "Ну вот, опять всё сломалось!", "Какая сука удалила сборку???" )

Date: 2006-09-15 06:38 am (UTC)
From: [identity profile] metaclass.livejournal.com
Конкретно для нарушения ограничений в базе данных, к примеру:
Primary key с определенными именем - "Такая запись уже существует в таблице 'приемлемое для юзера название таблицы'"
Foreign key при удалении записи на которую ссылается кто-нибудь - "На запись есть ссылка в таблице '...'"
Foreign key при добавлении записи с неправильным значением поля, на которое наложено ограничение - "Не найдена запись с номером 'подставить введенное значение поля' в таблице 'имя справочника' "
Ограничения сheck и unique аналогичным образом.

Date: 2006-09-15 06:42 am (UTC)
From: [identity profile] beskov.livejournal.com
нет, ну это понятно - мне интересно, с какой целью такие сообщения передавать пользователю? Что он с ними делать будет - цитировать по имейлу/телефону разработчику? Или сам сможет предпринять какие-то действия по устранению причины ошибки?

Date: 2006-09-15 06:57 am (UTC)
From: [identity profile] metaclass.livejournal.com
Для разработчика ошибки в первозданном виде пишутся в лог. А пользователь сможет предпринять действия - ввести правильные значения в поля записи.

Date: 2006-09-15 08:17 am (UTC)
From: [identity profile] kong-en-ge.livejournal.com
Да уж, ребе, fuzzy logic с реконструкцией бухпроводок явно искалечил ваш моск! :-)

Date: 2006-09-17 07:47 pm (UTC)
From: [identity profile] medvedd.livejournal.com
Вставить в первую очередь :)
http://andrew-vasilkov.livejournal.com/8990.html

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 12th, 2025 06:42 am
Powered by Dreamwidth Studios