Sergey
Sergey
Alexandr
паника как правила когда полный звездец (не всегда), почти все остальное возвращает 2 значения
Alexandr
ну си еще, да, просто код выполнения операции
Sergey
Sergey
Sergey
другой механики нету
Alexandr
так речь не про наличие механизма эксепшенов
Romɑn
https://twitter.com/vzarytovskii/status/1390280587722772480?s=09
Sergey
Alexandr
речь про то, что такой обычный метод как удаление файла \ директории, генерирует нормальное такое количество исключений
Alexandr
в условном го он вернет еррор
Alexandr
в си - код ошибки
Alexandr
https://docs.oracle.com/javase/tutorial/essential/io/delete.html
Alexandr
} catch (NoSuchFileException x) {
System.err.format("%s: no such" + " file or directory%n", path);
Alexandr
Бросать исключение не то, что файла нет в директории, когда ты вызываешь его удаление
Alexandr
Я вот не поверю что это адекватное поведение, и что это действительно исключительная ситуация
Sergey
я не понял какие предложения то
Sergey
верить или не верить это в храм идти
Sergey
что ты предлагаешь
Sergey
Anatoly
И не кидать идиотских исключений
Sergey
Вернее он другие какие-то может кинуть но не файлнотфауд
Alexandr
я не понял какие предложения то
так ведь речь была не об этом) это просто в тему обработки ошибок и что в целом пока идеального варианта нет
Но мне ближе был бы подход го, но с хорошим синтаксическим сахаром для обработки всего этого
Мб возврат error либо result когда надо
Alexandr
когда тебе надо игнорируешь, когда нужно обрабатываешь
Sergey
Alexandr
но как писал выше, подобное к куче |> ignore привести может так что я хез, идеальных вариантов пока не видел
Mark
зависит
Вернуть bool, был ли удален файл
Sergey
Alexandr
бул тоже не всегда вариант
Sergey
или потому что нету файла
Sergey
есть разница?
Alexandr
он не даст контекст
Alexandr
Result видится хорошим вариантом, но можно на грабли го легко наступить
Sergey
Sergey
Sergey
Да даже если проверил, на момент вызова их может не стать
Mark
так а если не проверил то че
Ну я размышляю так, что в нормальной ситуации проблем с правами не должно быть. Если они есть, то что-то с логикой приложения не так и надо править. А для нормального хода процесса удаления возвращать бул, удалился файл или нет
Но звучит это все немного запутанно и неоднозначно
Sergey
Sergey
тут помоему @theycallmewildrose рассказывал как они избавлялись от ошибок
Mark
Ну приложение это не только код, а ещё окружение
Mark
Если прав не хватило на удаление, то приложение вряд ли дальше сможет работать штатно
Sergey
Ilya
Sergey
Sergey
А есть ещё хттп, там нужно вообще всего ожидать
Alexandr
Ага, и вроде если в ответ приходит не 200 код, кидается эксепшен, и если инет упал, днсник.
Alexandr
хотя это в вебе вроде рядовая ситуация так-то
Sergey
Не, в сишарпе по крайней мере хттп клиент так не делает
Anonymous
Alexandr
https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient.getstringasync?view=net-5.0 ориентируюсь на это, но насчет кода 200 не уверен совсем
Sergey
Ну он любой код ответа прожуёт, а если что-то в сетевом стеке отстрелило то эксепшн
Sergey
Коды ошибок заманчиво, но они не сквозные для разных подсистем и ебись потом с этим 0x100500_FUCK_YOU_FUCK
Anatoly
Mark
Alexandr
Alexandr
если и возвращать значение, то какой-то Result или Error Option
но как уже говорил выше, можно наступить на грабли го, и еще задолбишься игнорить получаемое значение
Sergey
Sergey
когда не узнал что есть чекед эксепшены
Sergey
Alexandr
Я про случаи с делитем
Alexandr
не всегда для тебя имеет значение, был ли файл успешно удален
Sergey
Ну ты вокруг одного кейса пытаешься систему строить
Alexandr
я не пытаюсь, за меня все построили)
Alexandr
фактически, хотелось бы просто иметь меньше эксепшенов в стиле что файл не обнаружен
Alexandr
а так ну есть эксепшены и есть, нужно с этим жить и их обрабатывать
Sergey
@ilchert вот про Try* говорил для таких случаев, по-моему разумно звучит. Осталось только правильный System.IO написать)
Alexandr
ну тогда опять натыкаешься на то, что как тогда уведомить что файл для удаления не обнаружен
Alexandr
трайзвезда это что?
Sergey
Alexandr
я как-то писал обобщенную функцию трай кстати
Sergey
Ну всякие методы TryParse(.... out result)
Sergey
в джаве
Alexandr
Трай нормальный выход, согласен