Size: a a a

2020 March 26

А

Алексей R in Yii Framework 3
про 404 никто не говорил, что должно быть исключением )
источник

NO

Nex Otaku in Yii Framework 3
В Yii2 классический способ обработки, throw new NotFoundException
источник

А

Алексей R in Yii Framework 3
и вообще любой HTTP код
источник

NO

Nex Otaku in Yii Framework 3
Переслано от Dmitriy S
Даже сейчас юзкейс есть. Я могу из контроллера вызвать NotFoundHandler, типа сэмулировать, что маршрут не найден
источник

NO

Nex Otaku in Yii Framework 3
Переслано от Dmitriy S
А почему, если маршрут не найден, то не исключение?
источник

NO

Nex Otaku in Yii Framework 3
Если маршрут не найден, это типичная ситуация с 404
источник

А

Алексей R in Yii Framework 3
не совсем так
источник

NO

Nex Otaku in Yii Framework 3
В Yii2 в таком случае принято бросать исключение. Но по-хорошему так делать не стоит.
источник

А

Алексей R in Yii Framework 3
рассматривай роутер как одну из мидлварей в бесконечном пайплайне )
источник

NO

Nex Otaku in Yii Framework 3
И, какая разница?
источник

А

Алексей R in Yii Framework 3
если роут не найден в дереве роутов, то это не значит, что 404. Просто мидлварь пропускает запрос дальше
источник

А

Алексей R in Yii Framework 3
и вот следующая мидлварь может сказать 404!
источник

NO

Nex Otaku in Yii Framework 3
Исключение всегда должно указывать на *исключительную* ситуацию, то есть ту, которой быть не должно. Например, сдох диск, не хватило памяти или ещё что-то настолько же катастрофичное. Такая ситуация, после которой мы вообще не уверены, сможет ли программа работать. Поэтому делаем аварийное завершение.

Если же это просто редкая, но нормальная ситуация, такая как некорректный ввод данных, то это должно быть предусмотрено и обработано без исключений. 404 не является ошибкой логики приложения. Не является сбоем оборудования. Мы всегда знаем, как обработать эту ситуацию. Поэтому исключения быть не должно, должен быть просто ответ 404.

Иногда разработчики пытаются сделать общение между объектами через исключения. Но это тупик. Теряется самое главное преимущество механизма обработки ошибок — возможность видеть внятную общую картину, насколько корректно работает приложение. Мы не можем просто посчитать Exception и сказать, что у нас "ошибка не чаще раз в день", потому что мы должны посчитать всё, потом вычесть 404, а то и 403, всё усложняется...
источник

NO

Nex Otaku in Yii Framework 3
Попытка наладить общение между компонентами через исключения, практика довольно распространённая, но вредная (
источник

А

Алексей R in Yii Framework 3
Nex Otaku
Исключение всегда должно указывать на *исключительную* ситуацию, то есть ту, которой быть не должно. Например, сдох диск, не хватило памяти или ещё что-то настолько же катастрофичное. Такая ситуация, после которой мы вообще не уверены, сможет ли программа работать. Поэтому делаем аварийное завершение.

Если же это просто редкая, но нормальная ситуация, такая как некорректный ввод данных, то это должно быть предусмотрено и обработано без исключений. 404 не является ошибкой логики приложения. Не является сбоем оборудования. Мы всегда знаем, как обработать эту ситуацию. Поэтому исключения быть не должно, должен быть просто ответ 404.

Иногда разработчики пытаются сделать общение между объектами через исключения. Но это тупик. Теряется самое главное преимущество механизма обработки ошибок — возможность видеть внятную общую картину, насколько корректно работает приложение. Мы не можем просто посчитать Exception и сказать, что у нас "ошибка не чаще раз в день", потому что мы должны посчитать всё, потом вычесть 404, а то и 403, всё усложняется...
да никто не говорит про исключения 404 и 403
источник

NO

Nex Otaku in Yii Framework 3
Ты при не найденном роуте кидаешь исключение, чтобы передать обработку? Правильно?
источник

А

Алексей R in Yii Framework 3
Nex Otaku
Ты при не найденном роуте кидаешь исключение, чтобы передать обработку? Правильно?
пока ещё никто ничего не кидает )
источник

NO

Nex Otaku in Yii Framework 3
Окей, речь о том, чтобы мидл кинула исключение NotFound, чтобы сообщить о том что роут не найден?
источник

А

Алексей R in Yii Framework 3
нет
источник

А

Алексей R in Yii Framework 3
речь о том, что когда роутер запускается в мидлвари, то при попытке вызвать несуществующий экшен выбрасывалось исключение, которое ловилось бы в мидлвари и эта мидлварь запускала следующую мидлварь
источник