Как я могу проверить, существует ли сервер в Emacs Lisp - PullRequest
3 голосов
/ 19 мая 2011

Я пишу функцию, которая проверяет наличие брокерских ссылок в буфере режима org:


    (setq urls '("http://google.com" "http://bing.com" "http://www.yahoo.com"  "http://thisdoesntexist.net"))
    (while (setq nextlink (car urls))
      (if (url-http-file-exists-p nextlink)
          (message "Link works: %s" nextlink)
        (message "Broken Link found: %s" nextlink))
      (setq urls (cdr urls)))

Это работает, за исключением случаев, когда он встречает несуществующий веб-сервер. Затем он выдает ошибку lisp и открывает буфер backtrace .

Я хотел бы сначала проверить, существует ли сервер, и если да, то использовать url-http-file-exist-p для проверки конкретного документа.

Спасибо

  • Отредактировано, чтобы добавить решение, которое работает для меня. Спасибо, Дов! (while (setq nextlink (car urls)) (condition-case nil (if (url-http-file-exists-p nextlink) (message "Link works: %s" nextlink) (message "Broken Link found: %s" nextlink)) ((error) (message "Server not found: %s" nextlink))) (setq urls (cdr urls)))

1 Ответ

6 голосов
/ 19 мая 2011

Почему бы просто не перехватить ошибку через блок обработки исключений condition-case?

...