Size: a a a

2020 June 03

М

Михаил in learn.java
А ошибка должна быть, на мой взгляд, проверяемой чтобы пробросить ее до контроллера, а там выдать месседж.
источник

DK

Dzmitry Kharevich in learn.java
Можно и не проверяемой
источник

М

Михаил in learn.java
Denis Chikanov
Ну, для надёжности можно только провалидировать весь файл, всё остальное - игры с вероятностями.
Да, я так и делаю. Не знаю какая есть стандартная ошибка, а IOexception выглядит не подходящей.
источник

l

lem0nify in learn.java
То есть, Вы собираетесь в целях экономии трафика вероломно прерывать отправку после первых пары байт и определения формата? HTTP вообще позволяет такое делать? 🤔
источник

DC

Denis Chikanov in learn.java
Михаил
Да, я так и делаю. Не знаю какая есть стандартная ошибка, а IOexception выглядит не подходящей.
Я же прямо сказал, какая в Спринге для этого есть ошибка, и почему такой ошибки нет (и быть не может в некотором смысле) в стандартной библиотеке.
источник

М

Михаил in learn.java
Dzmitry Kharevich
Можно и не проверяемой
Можно. Но как тогда рассказать автору контроллера что он должен ее обработать?
источник

l

lem0nify in learn.java
Михаил
Можно. Но как тогда рассказать автору контроллера что он должен ее обработать?
Javadoc?
источник

DC

Denis Chikanov in learn.java
Михаил
А ошибка должна быть, на мой взгляд, проверяемой чтобы пробросить ее до контроллера, а там выдать месседж.
Для этого эксепшн не должен быть checked, более того, в спринге не принято в методах контроллера заниматься сериализацией эксепшнов ХТТП-серверов, для этого в спринге есть другие готовые механизмы, пользуйтесь документацией, пожалуйста. ControllerAdvice, все дела.
источник

DK

Dzmitry Kharevich in learn.java
Она пробросится наверх, а вы через advisor пишите обработку
источник

DC

Denis Chikanov in learn.java
Михаил
Можно. Но как тогда рассказать автору контроллера что он должен ее обработать?
Тесты на поведение системы.
источник

DK

Dzmitry Kharevich in learn.java
Михаил
Да, я так и делаю. Не знаю какая есть стандартная ошибка, а IOexception выглядит не подходящей.
Создать свою
источник

DC

Denis Chikanov in learn.java
Dzmitry Kharevich
Создать свою
Так не нужно ничего создавать, я сообщений уже на 30 выше написал, что в спринге есть ResponseStatusException, если мы говорим о логике уровня HTTP-протокола.
источник

М

Михаил in learn.java
Denis Chikanov
Так не нужно ничего создавать, я сообщений уже на 30 выше написал, что в спринге есть ResponseStatusException, если мы говорим о логике уровня HTTP-протокола.
Я вообще не вижу связи с HTTP и сетью. Это не сетевая ошибка.
источник

DC

Denis Chikanov in learn.java
Михаил
Я вообще не вижу связи с HTTP и сетью. Это не сетевая ошибка.
Если вам зачем-то хочется эксепшн внутри кидать, кидайте IllegalArgumentException, очевидно.
источник

М

Михаил in learn.java
Михаил
Я вообще не вижу связи с HTTP и сетью. Это не сетевая ошибка.
IllegalArgumentException но он рантайм, вот что мне не нравится.
источник

DC

Denis Chikanov in learn.java
Хотя "пришли не подходящие под спеку на базовом уровне данные" - это что-то, что не должен обрабатывать сам сервис, я считаю.
источник

DC

Denis Chikanov in learn.java
Михаил
IllegalArgumentException но он рантайм, вот что мне не нравится.
Повторяю: checked exception не дают совершенно никаких разумных гарантий, если вам нужны гарантии поведения системы, вам нужна спецификация на систему и тесты, проверяющие соответствие этой спецификации.
источник

М

Михаил in learn.java
Denis Chikanov
Хотя "пришли не подходящие под спеку на базовом уровне данные" - это что-то, что не должен обрабатывать сам сервис, я считаю.
Хорошее замечание. Можно на уровне фильтров это проверять.
источник

DC

Denis Chikanov in learn.java
Михаил
Хорошее замечание. Можно на уровне фильтров это проверять.
...а на уровне фильтров можно радостно кинуть тот самый ResponseStatusException сразу и не заморачиваться
источник

М

Михаил in learn.java
Denis Chikanov
...а на уровне фильтров можно радостно кинуть тот самый ResponseStatusException сразу и не заморачиваться
Но тогда у меня будет фильтр, который сохраняет файл на файловую систему, что тоже странно.
источник