2016-11-25 1 views
0

Versuch https://github.com/grammarly/perseverance zu verwenden, warum die folgenden fehlschlägt? Ie. noch der letzte Aufruf erzeugt eine Ausnahmeclojure Wiederholungs Bibliothek Ausdauer Nutzung

(defn fail-n 
    "returns a function that will fail to process for the first n times is is called" 
    [n] 
    (let [cnt (atom 0)] 
    (fn [] 
     (if (< @cnt n) 
     (do (swap! cnt inc) 
      (throw (RuntimeException. "Failed"))) 
     :success)))) 

(defn safe-fail-n [n] 
    (p/retriable { 
       ;;:catch [RuntimeException] 
       } (fail-n n))) 

;;(def f (fail-n 1)) 
(def f (safe-fail-n 2)) 

(p/retry {;;:strategy (p/constant-retry-strategy 0) 
      ;;:catch [Exception] 
      ;;:log-fn (fn [& a] (println "Retrying "a)) 
      } 
      (f)) 

Antwort

1

Kasse die github readme, müssen Sie den RE in der p/retriable Form fangen

sonst nichts gefangen wird - oder erneut versucht

user=> (let [x (fail-n 5)] 
     (p/retry {} 
      (p/retriable {:catch [RuntimeException]} (x)))) 

java.lang.RuntimeException: Failed, retrying in 0,5 seconds... 
java.lang.RuntimeException: Failed, retrying in 0,5 seconds... 
java.lang.RuntimeException: Failed, retrying in 0,5 seconds... 
java.lang.RuntimeException: Failed, retrying in 1,0 seconds... 
java.lang.RuntimeException: Failed, retrying in 2,0 seconds... 
:success 

relevant doc:

: catch - sollte eine Liste von Exception-Klassen sein, die von retriable abgefangen werden. Der Standard Wert ist [java.io.IOException]. Perseverance verfängt nicht alle Ausnahmen absichtlich erneuten Versuch, die Fehler zu vermeiden, die nicht IO-verwandt ist, die die richtigen Fehler in Ihrem Programm Umgang umgehen würden. Dennoch kann man immer bieten: catch [Exception] wenn Sie sicher sind, dass jede mögliche Ausnahme innerhalb retriable ist

+0

Ich verstehe, warum Ihr Beispiel Arbeit, aber nicht wirklich, warum mein versagt. Ich habe versucht, 'RuntimeException' und sogar' Exception' zu fangen und kommentierte es. – nha

+0

es es nicht genau fangen, * weil * it out kommentiert hat – birdspider

+0

rechts - ich muss hängen etwas abgestanden REPL Zustand gehabt haben um – nha

Verwandte Themen