我有一个设置,我从 Java 应用程序执行 jython 脚本。Java 应用程序为 jython 脚本提供来自命令行的变量,以便用户可以在其 jython 脚本中编写以下代码:
print("Hello, %s" % foobar)
并将用这个调用java程序:
$ java -jar myengine.jar script.py --foobar=baz
Hello, baz
我的 java 应用程序解析命令行,并使用给定值创建该名称的变量,以提供给 jython 脚本环境使用。到目前为止一切都很好。
我的问题是,当用户不提供foobar命令行参数时,我希望能够轻松地在我的脚本中提供回退。现在,用户需要编写这样的代码来处理foobar命令行中缺少参数的情况:
try: foobar
except NameError: foobar = "some default value"
但这很麻烦,尤其是在参数数量不断增长的情况下。从脚本用户的角度来看,有没有办法更好地处理这个问题?
我正在考虑在 Java 代码中捕获 jython NameError,如果导致异常的变量“看起来像”一个参数(添加命名约定是可以的),则将导致异常的变量初始化为默认值,然后在发生异常的地方重新启动. 或者,我可以要求脚本用户编写如下代码:
parameter(foobar, "some default value")
或等价的东西。