Найти - Пользователи
Полная версия: Как будет "fail silently" по-русски?
Начало » Флейм » Как будет "fail silently" по-русски?
1 2
bismigalis
>Как будет “fail silently” по-русски?
“сломаться тихо/безшумно”

py.user.next
“тихо сбоить”
имеется в виду, что если происходит ошибка, это не должно оставаться незамеченным
как раз наоборот
py.user.next
Errors should never pass silently.
хорошая практика, да
FishHook
Django проглотит без исключений.
это и есть пример “fail silently”


py.user.next
Lexander
Нет такого правила.
есть

Lexander
Я привел пример, где такое поведение практикуется.
и что дальше ?

Lexander
Кроме шаблонизаторов, система логгирования тоже работает в режиме fail silently.
запись в лог в случае ошибки - это не “fail silently”

для того и утверждения сделаны (assert'ы), чтобы программа просто выпадала, всё останавливалось и пользователь заметил
если программа неправильная, с ошибкой, то она работает неправильно
если программа продолжает неправильно работать, то получается неправильный результат
поэтому она всегда должна сообщать об ошибке, явно или в журнал, чтобы её исправили
Lexander
py.user.next
есть
Есть, но оно прикладное.
Но не распространяется на все программирование, поэтому не является общим, как вы утверждаете.
py.user.next
запись в лог в случае ошибки - это не “fail silently”
Не запись в лог, а “система логгирования”.
Она использует принцип “послал и забыл”.
А если что-то в лог не записалось, то это такую ошибку игнорируют.
Знаете зачем ее игнорируют?
bismigalis
bismigalis
“сломаться тихо/безшумно”
учитывая что подразумевается продолжение работы, то “сломаться” не совсем точно отражает. Я нашёл как лучше превести в данном контексте fail - “сбой, сбоИть”. Тогда превод “сбоИть незаметно”
py.user.next
Lexander
Но не распространяется на все программирование, поэтому не является общим, как вы утверждаете.
оно настолько же общее, насколько общ отказ от goto

Lexander
Не запись в лог, а “система логгирования”.
в чём же функция системы логирования (журналирования), если не запись в журнал ?

Lexander
А если что-то в лог не записалось, то это такую ошибку игнорируют.
чтобы программа оставалась неправильно, а выглядела красиво

Lexander
Знаете зачем ее игнорируют?
я не знаю, про что речь
пример конкретный приведи

Lexander
py.user.next
в чём же функция системы логирования (журналирования), если не запись в журнал ?
Принцип применим не к функции системы, а ко всей системе.
Поэтому я подчеркиваю разницу.
py.user.next
чтобы программа оставалась неправильно, а выглядела красиво
Нет. Система логгирования - это вспомогательная система, без которой работоспособность системы в целом не должна страдать. В том числе, если вспомогательная система сбоит.
Кроме того, ее особенность в том, что она всегда последняя в цепочке обработки ошибки.

По вашему, если ошибка происходит при записи в лог-файл, то программе следует бы просто вылетать с ошибкой? Так красиво?

py.user.next
пример конкретный приведи
Если при записи в лог-файл возникает ошибка, ее следует проигнорировать в подавляющем большинстве систем.
Потому что прикладная программа не только не может повлиять на ошибку, но часто даже не знает причину ее возникновения.

Если антивирус заблокировал лог-файл, если возникла аппаратная ошибка, система логгирования никак не может решить эту проблему.

Отдельная песня - программы для обслуживания производственных агрегатов в реальном времени.
Там вылет программы - это остановка производственного процесса,- ЧП.

А сообщить об ошибке можно только путем крэша, т.к. остальные стандартные потоки типа stderr либо уже заняты, либо перенаправлены в этот самый файл, либо вообще перенаправлены в dev/null.
Поэтому такую ошибку игнорируют. Иногда используют альтернативную систему сообщений: mail, sms, sys log. Но это, как говорят, зависит от…
py.user.next
Lexander
Если антивирус заблокировал лог-файл, если возникла аппаратная ошибка, система логгирования никак не может решить эту проблему.
нужно вернуть код ошибки

Lexander
А сообщить об ошибке можно только путем крэша
речь идёт про несообщение об ошибке

Lexander
Поэтому такую ошибку игнорируют.
и она остаётся неисправленной

Lexander
По вашему, если ошибка происходит при записи в лог-файл, то программе следует бы просто вылетать с ошибкой?
нет, программа должна сообщить об этом программисту, если это случай внутреннего сбоя программы, а не результат внешнего воздействия (если определить не может, то это внутренний сбой)
Lexander
py.user.next
нужно вернуть код ошибки
Куда? Кто ее обрабатывать будет?
py.user.next
речь идёт про несообщение об ошибке
Вот потому и не сообщают.
py.user.next
и она остаётся неисправленной
Да. И что с того?
py.user.next
программа должна сообщить об этом программисту, если это случай внутреннего сбоя программы, а не результат внешнего воздействия (если определить не может, то это внутренний сбой)
Еще раз. Лог-файл - это последняя инстанция. Как вы собираетесь сообщать программисту?

ЗЫ
Я вам больше скажу, есть еще такое понятие как Silence Warnings.
Угадайте где используется ;)
FishHook
Lexander
Куда? Кто ее обрабатывать будет?
Не обязательно ее обрабатывать, надо о ней сообщить.
Куда? Да хоть в консоль, хоть в MessageBox.
Lexander
FishHook
Не обязательно ее обрабатывать, надо о ней сообщить.Куда? Да хоть в консоль, хоть в MessageBox.
… если есть такая возможность. Если ее нет - в соответствии с алгоритмом, например, fail silently.
Вывод в консоль то, обычно, тоже в лог-файл перенаправляется.
Что касается GUI приложений, то я, навскидку, не могу придумать, где нужно подавлять сообщения об ошибках без какой-либо реакции.

Но это мы чуть в сторону ушли, контекст нашего с py.user.next обсуждения - система логгирования.
Его и моя фраза касается только этого частного случая.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB