Mike
оставаться спокойным
Mike
и разруливать ошибками
Mike
не поняла либа — аналог 422
Мерль
Например если у вас конструктор какой-нибудь коллекции и вы принимаете на входе размер для преаллокации, то в случае, если он меньше нуля, нужно падать (хотя в данном случае я бы использовал uint)
Mike
падать вообще хуево
Mike
а что если у тебя несколько параллельных клиентов?
Anonymous
Daniel
panic - плохое название, да :) suicide был бы лучше
Daniel
Mike
Anonymous
Не goway же!
Daniel
ну смотри
Daniel
что делать, если тебе file.Close() вернул ошибку? скорее всего, это означает, что все плохо, и лучше не станет
Daniel
а рестарт приложения может и помочь
Anonymous
Michael
либа возвращает ошибки, прикладной код сам решает падать или нет
Michael
в чём вопрос?
Ivan
нет, ну понятно, что на топ левеле обернешь recover-ом все от чудиков, которые паники кидают, но все равно не надо их кидать без дела.
Michael
нафик таких чудиков
Daniel
Daniel
Ivan
Ivan
начни писать в логи, на графики, что что-то не можешь обслужить, пусть мониторщики среагируют и натравят уже ответственных ,кто разберется, почему эти запросы не успешно отрабатывают.
Daniel
да почему же? плохо падать на тех ошибках, которые можно обработать. а на ошибках, которые обработать нельзя - падать хорошо и правильно
Daniel
и дальше-то что?
Ivan
Ivan
и это может быть зависеть от бизнес логики
Ivan
Если у тебя цель приложения записать один файлик и выйти, то да, по close можно и упасть
Anonymous
Дальше тот, кто юзает твою либу, уже сам решает, что делать. Если файл важен - вывести сообщение юзеру/отправить админу e-mail. Файл не важен - игнорировать.
Daniel
Close очень редко возвращает ошибки
Daniel
практически никогда
Ivan
а есть у тебя приложение принимает файлики от клиентов и куда-то их пишет, то странно падать, если что-то пошло не так.
Daniel
но если он ее все-таки вернул - что-то пошло очень сильно не так
Anonymous
Daniel
Мерль
Или надо писать для каждой сторонней библиотеки свой валидатор?
Anonymous
Daniel
и если "не так", то что?
Ivan
Ivan
Мерль
Ты будешь всерьёз сначала писать переменные отдельно, хардкодить для них значения, писать двадцать if-ов и десять свитчей для проверки, а после этого загонять в структуру?
Anonymous
Мерль
Мерль
В го для этого используются конструкторы
Мерль
Внутри которых выполняется валидация
Anonymous
Мерль
И дай угадаю, что ты сделаешь в той ветке, которая соответсвует невалидным параметрам?
Правильно, упадёшь, потому что нет смысла работать с невалидными данными
Мерль
Мерль
Конструктор, который принимает структуру -конфиг
Anonymous
Мерль
Ты уже запорол всю логику
Мерль
На этапе написания
Anonymous
Надо пример для обсуждения, абстрактно трудно донести ))
Anonymous
Дополню также, что либа имхо не должна иметь права завершать программу (exit)
Мерль
Мерль
Допустим, это декодер какой-нибудь
Aleksandr
Куда?
И зачем?
Чтобы что?
чтобы дать понять либе выше, что фабрика не отработала, и надо что-то сделать. не панику же кидать
Anonymous
Куда?
И зачем?
Чтобы что?
Пример - у меня несколько обработчиков в разных тредах работают. И вдруг один тред решает убить всю прогу... думаю, это плохо
Daniel
коллеги, простой пример. как известно - метоны можно вызывать на nil-ресивере
Мерль
Вообще
Мерль
В принципе
Daniel
что делать, если тебя вызвали на нил-ресивере?
Мерль
Finit la comedia
Мерль
Мерль
Потому что это означает, что у тебя ошибка в логике программы
Мерль
Это должно быть ещё на этапе тестов