Вот, блин, с тех пор как плохих программистов научили пользоваться
исключениями, сообщения об ошибках везде, от файрфокса до банкоматов
стали абсолютно неинформативными. Потому что за сорок уровней раскрутки
стэка теряется контекст, и приходится выводить сообщение
вида "у вас случилась полнейшая фигня". Еще привычку завели в этом
сообщении давать единый на все случаи жизни длинный текст про наиболее
частые ошибки. Не про случившуюся, а про наиболее частые.
Например банкомат вместо "у меня сейчас нет достаточного количества
купюр нужного достоинства" говорит "вы ввели неправильную сумму", хотя
я ее не вводил, я ее из его же собственной менюшки выбрал.
Почему-то паттерна обработки ошибок вида "навесить на исключение
дополнительный контекст, предназначенный для обработчика более высокого
уровня и передать дальше" не применяют. Хотя по умолчанию
интерпретаторы и компиляторы делают именно такой stack trace. Но не
машинночитаемый и не пользователечитаемый.
Система с кодами ошибок провоцирует, хотя и неявно именно такое
поведение - донести наверх, до обработчика именно содержательный смысл
ошибки, выдать такое сообщение. на которое кто-то (вышележащий код или
пользователь) сможет осмысленно отреагировать.
no subject
Date: 2017-03-17 04:41 am (UTC)Вот, блин, с тех пор как плохих программистов научили пользоваться исключениями, сообщения об ошибках везде, от файрфокса до банкоматов стали абсолютно неинформативными. Потому что за сорок уровней раскрутки стэка теряется контекст, и приходится выводить сообщение вида "у вас случилась полнейшая фигня". Еще привычку завели в этом сообщении давать единый на все случаи жизни длинный текст про наиболее частые ошибки. Не про случившуюся, а про наиболее частые.
Например банкомат вместо "у меня сейчас нет достаточного количества купюр нужного достоинства" говорит "вы ввели неправильную сумму", хотя я ее не вводил, я ее из его же собственной менюшки выбрал.
Почему-то паттерна обработки ошибок вида "навесить на исключение дополнительный контекст, предназначенный для обработчика более высокого уровня и передать дальше" не применяют. Хотя по умолчанию интерпретаторы и компиляторы делают именно такой stack trace. Но не машинночитаемый и не пользователечитаемый.
Система с кодами ошибок провоцирует, хотя и неявно именно такое поведение - донести наверх, до обработчика именно содержательный смысл ошибки, выдать такое сообщение. на которое кто-то (вышележащий код или пользователь) сможет осмысленно отреагировать.