У нас есть REST API, который прекрасно работает. Мы проводим рефакторинг и решаем, как внутренне обрабатывать ошибки пользователями нашего API.
Например, пользователю необходимо указать параметр URL «movie», который должен принимать значение «1984», «Crash» или «Avatar». Сначала мы проверяем, имеет ли оно допустимое значение.
Что было бы лучшим подходом, если параметр фильма недействителен?
- вернуть ноль из одного из внутренних методов и проверить нулевое значение в основном методе вызова API
- выбросить исключение из внутреннего метода и перехватить исключения в основном методе API
Я думаю, это сделает наш код более читабельным и элегантным для использования исключений. Однако мы неохотно, потому что мы могли бы вызвать много исключений из-за ошибок ввода пользовательского API, наш код мог бы быть идеальным. Это не похоже на правильное использование исключений. Если существуют большие потери производительности с исключениями, которые имеют смысл при необходимости сбора трассировок стека и т. Д., Тогда мы излишне тратим ресурсы, когда все, что нам нужно сделать, - сообщить пользователю, что параметр неверен.
Это методы API REST, поэтому мы не распространяем исключения на пользователей API, и мы не хотим, даже если это возможно.
Так какая же здесь лучшая практика? Использовать уродливые нули или использовать механизм исключений Java?