我在ImageJ中编写了一个宏,在BMP图像文件列表上运行批量“测量”。我使用headless.jar以无头模式在远程Linux机器上运行代码。ImageJ - 即使遇到错误,如何继续批处理
每当ImageJ在列表中读取/加载图像时遇到错误或异常,它都会退出该过程。因此,我必须不断监视进程并手动强制ImageJ跳过文件。
有没有一种方法可以强制ImageJ继续执行该过程,即使遇到了错误/异常?并可能在日志或其他文件中报告文件名?
我在ImageJ中编写了一个宏,在BMP图像文件列表上运行批量“测量”。我使用headless.jar以无头模式在远程Linux机器上运行代码。ImageJ - 即使遇到错误,如何继续批处理
每当ImageJ在列表中读取/加载图像时遇到错误或异常,它都会退出该过程。因此,我必须不断监视进程并手动强制ImageJ跳过文件。
有没有一种方法可以强制ImageJ继续执行该过程,即使遇到了错误/异常?并可能在日志或其他文件中报告文件名?
不可能在ImageJ宏语言中显式处理异常。但是,在进行有问题的宏调用之前,可以通过检查前提条件等来防范某些类型的异常。
例如,如果您的文件列表中包含不存在的文件,则可以使用File.exists(path)
[1]确保文件存在,然后再尝试将其打开。
当然,并不是所有的错误条件都可以通过这种方式很容易地检查(例如格式不正确的BMP),所以我同意medPhys-pl将您的宏重写为Imagej插件是最完整的解决方案。使用宏记录器(Plugins > Macros > Record
)设置为以插件模式记录而非宏记录可以很好地开始。一旦你有相关的命令来执行,您可以通过使用Fiji的Script Editor它们打包成一个插件很容易:
File > New > Script
Language > Java
Templates > Java > Bare PlugIn
run
方法。有关编写ImageJ插件的更多详细信息,请参阅斐济wiki的Introduction into Developing Plugins。
这听起来像你应该考虑重写你的宏作为Java插件。这会让您选择执行所需的错误处理。 –