Comment puis-je lancer une exception en Clojure?
Je souhaite lancer une exception et sont les suivantes:
(throw "Some text")
Cependant, elle semble être ignoré.
throw
jette les instances de JavaThrowable
. Ne(throw (Exception. "Some text"))
travail?- lorsque j'essaie (jeter "du texte"), je reçois un ClassClassException parce que la Chaîne ne peut pas être jeté à Lancer. Il est donc étrange que le jet est "ignoré" dans votre cas....
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'envelopper votre chaîne dans un Throwable:
ou
Vous pouvez mettre en place un try/catch/finally bloc ainsi:
REPL session:
clojure.contrib.condition fournit un Clojure-un moyen de traitement des exceptions. Vous pouvez soulever des conditions avec les causes. Chaque état peut avoir son propre gestionnaire.
Il y a un certain nombre d'exemples dans la source sur github.
C'est assez souples, en ce que vous pouvez fournir votre propre clé, la valeur des paires de sensibilisation et de décider ensuite que faire de votre gestionnaire basé sur les clés/valeurs.
E. g. (modificateur de l'exemple de code):
Vous pouvez ensuite disposer d'un gestionnaire pour
:something-is-wrong
:Si vous souhaitez lancer une exception et d'y inclure certaines informations de débogage en elle (en plus d'une chaîne de message), vous pouvez utiliser le haut- ex-info fonction.
Pour extraire les données à partir du déjà construit ex-info d'un objet, utilisez ex-données.
Exemple de clojuredocs:
Dans un commentaire kolen mentionné slingshot, qui propose des fonctionnalités avancées qui vous permet non seulement de jeter des objets de type arbitraire (avec jet+), mais aussi une utilisation plus flexible de catch de la syntaxe d'inspecter les données à l'intérieur de projections d'objets (avec essayer+). Exemples de le projet repo:
tenseur/parse.clj
math/expression.clj