Я пишу утилиту командной строки в Ruby и кодирую логику, которая проверяет правильность сочетания аргументов. Если я нахожу ошибку, в чем преимущество повышения аргумента ArgumentError или call abort() на месте, если я не намерен восстанавливаться? В общем, когда целесообразно поднять исключение вместо прерывания, если не планируется попытки восстановления? Я предполагаю, что маршрут исключения рекомендуется, требуется некоторая грациозная остановка, а не просто возврат к командной строке.Лучше отменять() или повышать() ошибку аргумента в Ruby?
ответ
Всегда, всегда делайте исключения, предпочитая прерывание. Отмена является уродливым и действительно последним видом взлома, который вы используете, если вы действительно не можете значимо продолжать.
Вы можете продолжить работу после ArgumentError
: вы можете указать пользователю, что такое правильный синтаксис, и вы можете распечатать справочное сообщение. Или, может быть, позже вы повторите использование парсера аргументов в другом проекте, который может обрабатывать ошибки. (Действительно, общая идиома заключается в вызове парсера аргументов в блоке исключений и распечатке справочного сообщения, если парсер аргументов вызывает ошибку).
В любом случае поведение по умолчанию ArgumentError
похоже на прерывание, но вы можете сделать с ним намного больше. По-моему, вы должны пойти с этим более гибким решением.
Поднять ошибку на любом языке программирования, когда это необходимо, чтобы остановить выполнение кода или перенаправить на обработчик ошибок, который может сделать с ним все, что вы хотите.
- 1. Ruby to_s преобразование в двоичную ошибку аргумента
- 2. только повышать ошибку проверки после отправки в формах Django
- 3. Сравнение между объектами повышать ошибку компиляции в соответствии с заказом
- 4. Ошибка аргумента Ruby
- 5. Зачем повышать :: блоки волокна?
- 6. Почему? бросая ошибку аргумента?
- 7. Родитель в аргументе аргумента ruby
- 8. Ошибка булевского аргумента в Ruby
- 9. Как проверить текущую сессию PHP или отменять
- 10. Программно повышать пользовательские права
- 11. Либо регистрировать или отменять это исключение
- 12. glBindTexture - возвращает ошибку аргумента
- 13. WEBRick не запускается, бросая неверную ошибку аргумента
- 14. повышать стоимость нилъ значение ошибки
- 15. Модифицировать наблюдаемые и отменять
- 16. Как разбить строку аргумента Bash в Ruby?
- 17. Передача массива в качестве аргумента в Ruby
- 18. Ruby on Rails: лучше ли проверять модель или базу данных?
- 19. библиотека/модуль или мой код? что лучше? (ruby)
- 20. VB.NET - Вручную повышать событие FormClosing
- 21. Написание лучше Ruby: как отличить объекты от ложных или истинных?
- 22. Youtube_It пример кода рисует ошибку аргумента
- 23. Огурец для веб-тестирования: лучше Ruby или JRuby?
- 24. cvGetSize дает плохую ошибку аргумента
- 25. На каком языке лучше использовать Threading? PHP или Ruby
- 26. Пытается напечатать ошибку аргумента массива
- 27. Блокировка трафика реферала спама - лучше перенаправить или выбросить ошибку 403?
- 28. Передача аргумента из ruby в скрипты python
- 29. Ruby задает переменную аргумента в объекте
- 30. Значение аргумента аргумента метода Ruby, неявное vs literal nil, ответственность библиотеки или вызывающие?
Мне нравится идея сообщения справки. Как минимум, я могу отобразить результаты вызова утилиты с помощью «--help». –
@AndreasYankopolus: Большинство служебных программ отображают сообщение об использовании (возможно, не полноправную помощь) при вводе неверной командной строки. Это делается как любезность для пользователя, чтобы помочь им запомнить, как использовать эту команду. – nneonneo
@steenslag: ОК, изменил язык. – nneonneo