Можно ли вытащить только один файл в Git?

Вместо генерации пользовательских классов существует два гораздо более простых способа использования пользовательских исключений:

  1. Используйте slingshot - это предоставляет пользовательские throw+ и catch+ макросы, которые позволяют вам бросать и захватывать любой объект, а также исключения.
  2. В clojure 1.4 и выше вы можете использовать clojure.core / ex-info и clojure .core / ex-data , чтобы генерировать и улавливать класс clojure.lang.ExceptionInfo, который обертывает сообщение и карту данных.

Использование этого просто:

(throw (ex-info "My hovercraft is full of eels"
                {:type :python-exception, :cause :eels}))

(try (...)
  (catch clojure.lang.ExceptionInfo e
    (if (= :eels (-> e ex-data :cause))
      (println "beware the shrieking eels!")
      (println "???"))))

Или в среднем тесте:

(fact "should throw some eels"
    (...) 
    => (throws clojure.lang.ExceptionInfo
          #(= :eels (-> % ex-data :cause))))

147
задан simhumileco 26 November 2018 в 12:23
поделиться