У меня есть установка, в которой я выполняю сценарии jython из приложения Java. Приложение java передает сценарий jython переменными, приходящими из командной строки, чтобы пользователь мог написать следующий код в своем сценарии jython:
print("Hello, %s" % foobar)
и вызовет программу java с this:
$ java -jar myengine.jar script.py --foobar=baz
Hello, baz
Мое приложение java анализирует командную строку и создает переменную с таким именем с заданным значением, которое необходимо передать среде сценариев jython для использования. Пока все хорошо.
Моя проблема в том, что, когда пользователь не предоставляет параметр командной строки foobar
, я хотел бы иметь возможность легко предоставить запасной вариант в моем сценарии. На данный момент пользователю необходимо написать код такого рода, чтобы справиться с ситуацией, когда в командной строке отсутствует параметр foobar
:
try: foobar
except NameError: foobar = "some default value"
Но это громоздко, особенно если количество параметров растет. Есть ли способ справиться с этим лучше с точки зрения пользователя сценария?
Я думал о том, чтобы перехватить jython NameError в коде Java, инициализируя переменную, вызывающую исключение для значение по умолчанию, если переменная, вызывающая исключение, «выглядит как» параметр (добавление соглашения об именах - ОК) и перезапуск в случае возникновения исключения. В качестве альтернативы я могу потребовать от пользователя сценария написать такой код:
parameter(foobar, "some default value")
или что-то эквивалентное.