Обработка исключений в Scheme script-fu - PullRequest
0 голосов
/ 29 сентября 2018

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

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

(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 Ответ

0 голосов
/ 29 сентября 2018

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 является единственной причиной любых ошибок.

...