Обрабатывать исключение в Scheme script-fu

Я написал скрипт для Gimp (script-fu!) В Scheme.

В какой-то момент сценарий требует действительно потрясающего инструмента "ресинтезатор".

(python-fu-heal-selection 1 image drawable 10 0 0)

Теперь проблема в том, что пользователь должен был установить Resynthesizer раньше. Если нет, он увидит неприятное сообщение об ошибке вроде

Ошибка: eval: несвязанная переменная: python-fu-heal-selection

Что я хотел бы сделать, так это обработать это исключение, чтобы пользователь мог знать, что не так.

Что-то вроде:

try
    (python-fu-heal-selection 1 image drawable 10 0 0)
catch/except/handle exception eval, or something
    (gimp-message "You have to install Resynthesizer, see the tutorial")

Но в схеме. Я провел свое исследование, но... обработка исключений в Scheme / script-fu не очень документирована...

Спасибо!

1 ответ

GIMP использует TinyScheme и в соответствии с документацией catch Синтаксис будет перехватывать все ошибки. То, что вы ищете, выглядит примерно так:

(catch (gimp-message "You have to install Resynthesizer, see the tutorial")
  (python-fu-heal-selection 1 image drawable 10 0 0))

Это предполагает, что отсутствие Resynthesizer является единственной причиной любых ошибок.

Другие вопросы по тегам