Какой стиль вы используете для сообщений об исключениях?[закрыто]
Вопрос
При написании кода, который выдает исключение, о котором я спрашивал здесь, я дошёл до конца своего сообщения и остановился на знаках препинания.Я понял, что почти каждое сообщение об исключении, которое я когда-либо выдавал, вероятно, имеет !где-то.
throw new InvalidOperationException("I'm not configured correctly!");
throw new ArgumentNullException("You passed a null!");
throw new StupidUserException("You can't divide by 0! What the hell were you THINKING??? DUMMY!!!!!");
Какой тон вы используете, когда пишете сообщения об исключениях?Просматривая журналы, обнаруживаете ли вы, что какой-либо определенный стиль сообщений действительно помогает больше, чем другой?
Решение
Разговор в системных сообщениях делает программное обеспечение непрофессиональным и небрежным. Восклицательные знаки, оскорбления и жаргон не имеют места в полированных сообщениях об исключениях.
Кроме того, я склонен использовать разные стили в Java для исключений времени выполнения и проверенных исключений, поскольку исключения времени выполнения адресованы программисту, который допустил ошибку. Поскольку конечные пользователи могут отображать исключения во время выполнения, я по-прежнему " сохраняю их чистыми " но они могут быть немного более краткими и загадочными. Проверенные сообщения об исключениях должны быть более полезными, поскольку может случиться так, что пользователь сможет решить проблему, если вы ее опишите (например, файл не найден, диск заполнен, нет маршрута к хосту и т. Д.).
Одна вещь, которая полезна, при отсутствии определенного поля в исключении для информации, это оскорбительные данные:
throw new IndexOutOfBoundsException("offset < 0: " + off);
Другие советы
Просто будь фактом. Включите всю информацию, которая вам может понадобиться при отладке, но не более того.
Единственный раз, когда я включаю восклицательный знак в сообщение об исключении, это если он указывает на то, что что-то действительно странное произошло. Большинство ошибок не являются действительно странными, просто являются результатом неправильной среды, пользовательской ошибки или простой ошибки программирования.
Я пытаюсь отразить тон, грамматику и стиль пунктуации структуры, против которой я кодирую. Вы никогда не знаете, когда одно из этих сообщений действительно может быть разобрано перед клиентом или пользователем, поэтому я сохраняю все профессионально, без суждений и достаточно конкретно для устранения неполадок - не будучи настолько конкретным, чтобы выдавать какие-либо проблемы безопасности в код.
Я избегаю восклицательных знаков во всех строках (пользовательский интерфейс и исключения), таких как чума, за исключением (иногда) в моих модульных тестах.
Взятие ответственности, даже если это действительно была ошибка пользователя, - лучший вариант, который я видел.
Что-то вроде "Я не могу найти файл, который вы хотели, не могли бы вы проверить, правильно ли он у меня?" или "Что-то пошло не так. Не знаю, что, но единственный способ исправить это - остановиться. Пожалуйста, перезапустите меня. & Quot;
Краткая, подробная и мало избыточная информация (т. е. ArgumentNullException явно содержит ноль).
Я считаю, что наиболее полезные сообщения содержат:
- А последовательный формат это позволяет легко понять, что они вам говорят.
- А отметка времени, чтобы вы могли почувствовать динамику вашей программы.
- А краткое изложение ошибки.Если вы предоставляете техническую поддержку, добавьте код ошибки для быстрой идентификации.
- Ан объяснение того, что пошло не так, различие между неверный ввод пользователя и ошибка кодирования.
- Подробная информация, в том числе строка кода или ценности вовлеченный.
И самое важное:
- Они сообщают пользователю, как решить проблему.
Пример:
Error 203 (Timeout) in commit.c line 42: Unable to save salary data for user 'Linus' to database at '10.10.1.21' after 1500ms. Verify database address and login credentials.
Один из самых трудных уроков, который нужно усвоить, заключается в том, что ваши пользователи гораздо меньше интересуются внутренней частью вашего кода, чем выполняют свою работу. Сделайте так, чтобы им было как можно проще выполнять свою работу, и вы повысите ценность своего программного обеспечения.
Я склонен превращать свои сообщения об исключениях в сами исключения. Например. file_not_found должен сказать «файл не найден». Конкретные данные должны быть включены, только если пользователь не может понять это; в этом случае пользователь знает имя файла, поэтому я не добавляю эти данные. Форматирование может быть выполнено любым выводом информации, если это необходимо, поэтому я стараюсь сделать их максимально удобными для переформатирования.
Вежливый, лаконичный, простой, конкретный. Часто полезно включать значения состояния в сообщение.