Меня по-прежнему поражает, что в наши дни продукты, которые годами используются под ленточным движением, созданные командами профессионалов и по сей день, не могут предоставить полезные сообщения об ошибках пользователю. В некоторых случаях добавление всего лишь небольшого фрагмента дополнительной информации может сэкономить пользователю много времени.
Программа, которая генерирует ошибку, сгенерировала ее по причине. Он имеет все в своем распоряжении, чтобы сообщить пользователю как можно больше, почему что-то не получилось. И все же кажется, что предоставление информации для помощи пользователю является низким приоритетом. Я думаю, что это огромный провал.
Один пример из SQL Server. Когда вы пытаетесь восстановить базу данных, которая используется, она совершенно справедливо не позволит вам. SQL Server знает, какие процессы и приложения обращаются к нему. Почему он не может включать информацию о процессе (ах), которые используют базу данных? Я знаю, что не все передают Applicatio_Name
атрибут в строке подключения, но даже подсказка о рассматриваемой машине может быть полезной.
Другой кандидат, также SQL Server (и mySQL) - это прекрасное string or binary data would be truncated
сообщение об ошибке и его эквиваленты. Много времени, простое изучение оператора SQL, который был сгенерирован, и таблица показывает, какой столбец является виновником. Это не всегда так, и если механизм базы данных обнаружил ошибку, почему он не может сэкономить нам это время и просто сообщает нам, какой это был проклятый столбец? В этом примере вы можете утверждать, что при его проверке производительность может снизиться, и это может помешать автору записи. Хорошо, я куплю это. Как насчет того, чтобы ядро базы данных узнало, что произошла ошибка, после этого оно быстро сравнивает значения, которые должны были быть сохранены, с длиной столбцов. Затем отобразите это пользователю.
Виновные адаптеры таблиц ASP.NET также виноваты. Запросы могут быть выполнены, и может быть выдано сообщение об ошибке, говорящее, что ограничение где-то нарушается. Спасибо за это. Пришло время сравнить мою модель данных с базой данных, потому что разработчики слишком ленивы, чтобы предоставить хотя бы номер строки или пример данных. (Кстати, я бы никогда не использовал этот метод доступа к данным по выбору , это просто проект, который я унаследовал!).
Всякий раз, когда я выкидываю исключение из своего кода на C # или C ++, я предоставляю все, что у меня есть, под рукой. Было принято решение выбросить его, поэтому чем больше информации я могу дать, тем лучше. Почему моя функция выдает исключение? Что было передано и что ожидалось? Мне требуется немного больше времени, чтобы поместить что-то значимое в текст сообщения об исключении. Черт, это только помогает мне, пока я развиваюсь, потому что я знаю, что мой код выбрасывает вещи, которые имеют смысл.
Можно утверждать, что сложные сообщения об исключениях не должны отображаться пользователю. Хотя я не согласен с этим, это аргумент, который может быть легко умиротворен, если иметь различный уровень детализации в зависимости от вашей сборки. Даже в этом случае пользователи ASP.NET и SQL Server не являются вашими обычными пользователями и предпочитают что-то, наполненное многословностью и вкусной информацией, потому что они могут быстрее выследить свои проблемы.
Почему разработчики считают, что в наше время нормально предоставлять минимальный объем информации при возникновении ошибки?
Это 2011 ребята, приходите на .